如果您使用AbsoluteLayout(我知道它已被弃用,但它是解决我的 problem的唯一方法),您可以给childViews标记android:layout_x
和android:layout_y
以设置它们的绝对在AbsoluteLayout
内的位置。Android:以编程方式更改视图的绝对位置
但是我不想在xml中设置这些信息,因为我只在运行时就知道它们。那么我怎样才能以编程方式在运行时设置这些参数?我在视图上看不到任何方法,如view.setLayoutX(int x)
或其他。
这里是我的XML,当我设置layout_x
和layout_y
值的正常工作,:
<?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);
}
谢谢你,但如何如何创建的LayoutParams因为mLayout是类型AbsoluteLayout的? AbsoluteLayout只有一个方法absolutLayout.generatelayoutParams(AttributeSet)。我不知道如何创建一个attributeSet在第一个地方,以便我可以将该设置传递给generateLayoutParams() - 方法 – 2010-08-09 17:35:46
我有同样的问题与RelativeLayout而不是绝对 – Amplify91 2011-03-25 20:04:10