Se si utilizza un AbsoluteLayout (so che è deprecato, ma era l'unico modo per risolvere il mio problem) è possibile assegnare a childViews il tag android:layout_x
e android:layout_y
per impostarne l'assoluto posizione all'interno dello AbsoluteLayout
.Android: modifica la posizione assoluta di una vista a livello di programmazione
Tuttavia, non voglio impostare queste informazioni in xml, perché li conosco solo in fase di esecuzione. Quindi, come posso impostare questi parametri al runtime a livello di programmazione? Non vedo alcun metodo sulla vista come view.setLayoutX(int x)
o qualcosa del genere.
Ecco il mio XML, che funziona bene, quando ho impostato le layout_x
e layout_y
valori:
<?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>
In realtà, io non voglio impostare un pulsante all'interno del xml più, ma piuttosto recuperare alcune informazioni tramite telecomando e aggiungere pulsanti a seconda di tali informazioni.
Qui è la parte del codice che sto utilizzando in modo a mio onCreateMethod
per aggiungere questi pulsanti:
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);
}
Grazie, ma come Come si crea LayoutParams visto che mLayout è di tipo AbsoluteLayout ? AbsoluteLayout ha solo un metodo absolutLayout.generatelayoutParams (AttributeSet). Non so come creare un attributo Set in primo luogo in modo che io possa passare quel set a generateLayoutParams() - Metodo –
Ho lo stesso problema con un RelativeLayout invece di Absolute – Amplify91