AbsoluteLayoutを使用する場合(非推奨であることはわかっていますが、これが私の問題を解決する唯一の方法でした)、childViewsにタグandroid:layout_x
を付けandroid:layout_y
て、内の絶対位置を設定できますAbsoluteLayout
。
ただし、これらの情報は実行時にしかわからないため、xmlに設定したくありません。では、これらのパラメータを実行時にプログラムで設定するにはどうすればよいですか?ビューにメソッドなどが表示されませんview.setLayoutX(int x)
。
layout_x
とlayout_y
値を設定すると、正常に機能するXMLは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:src="@drawable/myImageView"
android:layout_width="1298px"
android:layout_height="945px"
android:layout_x="0px"
android:layout_y="0px" />
<Button
android:id="@+id/myButton1"
android:text="23"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="50px"
android:layout_y="300px"
android:tag="23"/>
<Button
android:id="@+id/myButton2"
android:text="48"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="50px"
android:layout_y="300px"
android:tag="48"/>
</AbsoluteLayout>
実際、私はもうxml内にボタンを設定したくはありませんが、リモートを介していくつかの情報を取得し、その情報に応じてボタンを追加します。
onCreateMethod
これらのボタンを追加するために私が使用しているコードの一部は次のとおりです。
for (MyRemoteObject remoteObject: list) {
Button button = new Button(this);
button.setOnClickListener (listener);
button.setTag(remoteObject.id);
button.setText(remoteObject.id);
// button.setLayoutX(remoteObject.x) ????
// button.setLayoutY(remoteObject.y) ????
myLayout.addView(button);
}