EntryNavi : « AndroidでIPアドレス設定プリファレンスを使う | メイン | iSdBackup - Galaxy S専用(?)内蔵SDカードバックアップツール »

CategoryNavi : メイン -> コンピューター -> 開発 -> Java(Android)

AndroidのView(を継承したパーツ)を任意の場所に配置・移動する方法

AndroidのView(を継承したパーツ)を任意の場所に配置・移動する方法ってのが、Rewitで必要になって模索してました。
ListViewを画面のドラッグにあわせて左右にスライドさせたかったのです。
んで、編み出した技?です。

基本的にViewの位置はhtmlの用に解釈されて表示されるのでAbsoluteLayoutを使うしか無いはず、たぶん。
ですが、そおすると位置とか全部自前で制御なのでそこまではしたくない、できるだけシステムに基本的な部分は解釈させたいという天邪鬼的な考えから思いつきました。
コレ以外にいい方法あったらどなたか教えてくださいませm(。。)m

で。

方法は簡単
・動かしたいViewをLinearLayoutにいれる
・LinearLayoutのpaddingを調節する
いじょ!


まず、こんなxmlを用意します。
ListViewは親のLinearLayoutいっぱいに表示されます。
<LinearLayout
		android:id="@+id/Parent_LinearLayout"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent" 
		>
	<ListView android:id="@+id/Child_ListView"
			android:layout_width="fill_parent"
			android:layout_height="fill_parent" 
			android:cacheColorHint="#00000000" 
			> 
	</ListView>
</LinearLayout>

で、こんなコードを何かのイベントとかで書きます。

int dx = 100;
int dy = 100;
LinearLayout layout = (LinearLayout)findViewById(R.id.Parent_LinearLayout);
layout.setPadding(dx, dy, -1 * dx, -1 * dy);

padding値の右と下に動かしたい量の-1かけた値を入れるのがミソです。
サイズをそのまま平行移動させるためですね。


なので、これを応用?して
RelativeLayout
 LinearLayout
  View(うごかしたいの1
 LinearLayout
  View(うごかしたいの2
・・・

ってすれば、自由に配置ができるかもしれませんね。

<Category : Java(Android)>

検索

Google

サイドフィード

track feed 理ろぐ
人気ブログランキング - 理ろぐ
Powered by
Movable Type 3.34