Nếu bạn sử dụng AbsoluteLayout (Tôi biết rằng nó không được dùng nữa, nhưng đó là cách duy nhất để giải quyết problem) của bạn vị trí trong số AbsoluteLayout
.Android: Thay đổi vị trí tuyệt đối của chế độ xem theo chương trình
Tuy nhiên tôi không muốn đặt những thông tin này trong xml, vì tôi chỉ biết chúng khi chạy. Vậy làm thế nào tôi có thể thiết lập các tham số này khi chạy theo chương trình? Tôi không thấy bất kỳ phương pháp nào trên Chế độ xem giống như view.setLayoutX(int x)
hoặc thứ gì đó.
Đây là XML của tôi, trong đó hoạt động tốt, khi tôi đặt layout_x
và layout_y
giá trị:
<?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>
Trong thực tế, tôi không muốn đặt bất kỳ nút trong xml nữa, nhưng thay vì lấy một số thông tin qua điều khiển từ xa và thêm các nút tùy thuộc vào thông tin đó.
Dưới đây là phần mã Tôi đang sử dụng như vậy trong onCreateMethod
tôi để thêm các nút này:
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);
}
Cảm ơn bạn, nhưng làm thế nào làm thế nào tôi có thể tạo LayoutParams cho rằng mLayout là Loại AbsoluteLayout ? AbsoluteLayout chỉ có một phương thức absolutLayout.generatelayoutParams (AttributeSet). Tôi không biết làm thế nào để tạo ra một attributeSet ở nơi đầu tiên để tôi có thể vượt qua thiết lập để generateLayoutParams() - Phương pháp –
Tôi có cùng một vấn đề với một RelativeLayout thay vì Absolute – Amplify91