Android: Ändern Sie die absolute Position einer Ansicht programmgesteuert
Wenn Sie ein AbsoluteLayout (ich weiß, es ist veraltet, aber es war der einzige Weg zur Lösung meiner problem) Sie können die childViews der tag android:layout_x
und android:layout_y
Ihre absolute position innerhalb der AbsoluteLayout
.
Aber ich möchte nicht diese Informationen in der xml, weil ich weiß nur das Sie zur Laufzeit. Also, wie kann ich diese Parameter zur Laufzeit programmgesteuert? Ich sehe keine Methode, die auf den Blick wie view.setLayoutX(int x)
oder so etwas.
Hier ist meine XML-Datei funktioniert einwandfrei, wenn ich die layout_x
und layout_y
Werte:
<?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 der Tat, ich möchte nicht eine beliebige Taste innerhalb der xml-Datei mehr, sondern eher um etwas Informationen über remote und Schaltflächen hinzu, die je auf diese Informationen.
Ist hier der Teil, den code verwende ich so in meinen onCreateMethod
hinzufügen die folgenden Tasten:
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);
}
InformationsquelleAutor der Frage Pascal Klein | 2010-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die version von addView, nimmt LayoutParams:
InformationsquelleAutor der Antwort Cheryl Simon
In Antwort auf Ihren Kommentar auf Mayra Antwort, ich hatte ein ähnliches Problem mit RelativeLayout statt AbsoluteLayout. Die Lösung war die Verwendung einer ähnlichen Methode und werfe es als Ihre layout-Typ. So etwas wie dieses:
Es dauerte ewig, um dies herauszufinden, also wollte ich es hier posten für jemand anderen, wenn Sie es brauchte.
InformationsquelleAutor der Antwort Amplify91
Ich hatte gerade das gleiche problem gefunden, aber eine etwas andere Lösung.
Und wenn Sie finden Sie heraus, was für "fill_parent" (Tipp versuchen, -1), dann Sie können verwenden Sie diese Konstanten für Breite und Höhe.
InformationsquelleAutor der Antwort Lauri
Ich weiß nicht warum, aber beim verschieben der oberen und linken Kanten der Android hält die rechten und unteren Ränder im gleichen Ort. Wie konnte ich nicht ändern Sie die Breite und Höhe richtig (das Bild verschwand), ich habe diese:
Ich weiß nicht, ob es der beste Weg, aber für mich gearbeitet. Ich habe es getestet in der Version 2.2 oder höher und funktioniert einwandfrei!
Müssen Sie importieren android.- widget.LinearLayout.LayoutParams; denn der Standard ist ViewGroup ist LayoutParams (von Davit T)
InformationsquelleAutor der Antwort Rafael Brasil
den oben genannten Antworten sind richtig.aber wäre dies ein perfekter
InformationsquelleAutor der Antwort Asthme