Jeśli używasz AbsoluteLayout (wiem, że jest przestarzały, ale był to jedyny sposób na rozwiązanie mojego problem), możesz dać dzieckuZobacz etykietę android:layout_x
i android:layout_y
, aby ustawić ich absolutny pozycja w obrębie AbsoluteLayout
.Android: Automatycznie zmieniaj absolutną pozycję widoku
Jednak nie chcę ustawiać tych informacji w xml, ponieważ znam je tylko w czasie wykonywania. Jak więc programowo ustawić te parametry w środowisku wykonawczym? Nie widzę żadnej metody w View jak view.setLayoutX(int x)
lub coś podobnego.
Tu jest mój XML, który działa dobrze, kiedy ustawić layout_x
i layout_y
wartości:
<?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>
W rzeczywistości, nie chcę, aby ustawić dowolny przycisk wewnątrz xml już, ale raczej odzyskać niektóre informacje za pomocą pilota i dodawać przyciski w zależności od tych informacji.
Oto część kodu używam więc moim onCreateMethod
dodać te przyciski:
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);
}
Dziękuję, ale w jaki sposób mogę utworzyć LayoutParams skoro mLayout jest typu AbsoluteLayout ? AbsoluteLayout ma tylko metodę absolutLayout.generatelayoutParams (AttributeSet). Nie wiem jak utworzyć atrybutSet w pierwszej kolejności, tak, że mogę przekazać ten zestaw do generateLayoutParams() - Metoda –
Mam ten sam problem z RelativeLayout zamiast Absolute – Amplify91