AndroidのView(を継承したパーツ)を任意の場所に配置・移動する方法ってのが、Rewitで必要になって模索してました。
ListViewを画面のドラッグにあわせて左右にスライドさせたかったのです。
んで、編み出した技?です。
基本的にViewの位置はhtmlの用に解釈されて表示されるのでAbsoluteLayoutを使うしか無いはず、たぶん。
ですが、そおすると位置とか全部自前で制御なのでそこまではしたくない、できるだけシステムに基本的な部分は解釈させたいという天邪鬼的な考えから思いつきました。
コレ以外にいい方法あったらどなたか教えてくださいませm(。。)m
で。
方法は簡単
・動かしたいViewをLinearLayoutにいれる
・LinearLayoutのpaddingを調節する
いじょ!
ListViewを画面のドラッグにあわせて左右にスライドさせたかったのです。
んで、編み出した技?です。
基本的にViewの位置はhtmlの用に解釈されて表示されるのでAbsoluteLayoutを使うしか無いはず、たぶん。
ですが、そおすると位置とか全部自前で制御なのでそこまではしたくない、できるだけシステムに基本的な部分は解釈させたいという天邪鬼的な考えから思いつきました。
コレ以外にいい方法あったらどなたか教えてくださいませm(。。)m
で。
方法は簡単
・動かしたいViewをLinearLayoutにいれる
・LinearLayoutのpaddingを調節する
いじょ!
まず、こんなxmlを用意します。
ListViewは親のLinearLayoutいっぱいに表示されます。
で、こんなコードを何かのイベントとかで書きます。
サイズをそのまま平行移動させるためですね。
なので、これを応用?して
RelativeLayout
LinearLayout
View(うごかしたいの1
LinearLayout
View(うごかしたいの2
・・・
ってすれば、自由に配置ができるかもしれませんね。
<Category : Java(Android)>
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
・・・
ってすれば、自由に配置ができるかもしれませんね。