Platzieren Sie anzeigen innerhalb FrameLayout in Android
Möchte ich hinzufügen, dass ein Blick in ein FrameLayout programmgesteuert und platzieren Sie es in einem bestimmten Punkt innerhalb der Anordnung mit einer bestimmten Breite und Höhe. Tut FrameLayout dies unterstützen? Wenn nicht, sollte ich eine fortgeschrittene ViewGroup um dies zu erreichen?
int x; //Can be negative?
int y; //Can be negative?
int width;
int height;
View v = new View(context);
//v.setLayoutParams(?); //What do I put here?
frameLayout.addView(v);
Meine ursprüngliche Idee war es, fügen Sie ein AbsoluteLayout der FrameLayout und platzieren die Sicht im inneren des AbsoluteLayout. Leider habe ich gerade herausgefunden, dass AbsoluteLayout ist veraltet.
Alle Hinweise werden sehr geschätzt. Danke.
- haben Sie dadurch gelöst, dass Problem irgendwie? Ich bin interessiert in einem nicht-AbsoluteLayout Lösung 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist wahr, dass mit FrameLayout alle Kinder sind an der Oberseite Links auf dem Bildschirm, aber Sie haben noch eine gewisse Kontrolle, mit der Festlegung Ihrer Polsterung. Wenn Sie unterschiedliche padding-Werte zu anderen Kindern, Sie zeigen sich an verschiedenen stellen in das FrameLayout.
Folgenden Beispiel (Arbeits-code) zeigt, wie man ein view (EditText), in ein FrameLayout. Auch es wird gezeigt, wie die position des EditText mit der setPadding setter des FrameLayout (jedesmal, wenn der Benutzer klickt auf das FrameLayout, die position des EditText an die position des Klicks):
}
main.xml
Können Sie auch fügen Sie einen Rand um die neu hinzugefügte Ansicht an die gewünschte position innerhalb des FrameLayout.
Dieser position wird das FrameLayout 20 Pixel vom unteren Rand des Bildschirms.
Edit: abgeschlossen Beispiel, so steht es von selbst. Und oh, ja, es funktioniert.
Aus der link Quinn1000 zur Verfügung gestellt:
Bedeutet dies, dass Sie können nicht Ihre Sicht zu einem bestimmten Punkt innerhalb des FrameLayout (außer Sie wollen, dass es in der oberen linken Ecke :-)).
Wenn Sie die absolute Positionierung der Anzeigen, versuchen Sie die AbsoluteLayout:
Als für die Einstellung der Breite und Höhe des views, mag auch Quinn1000 sagte, Sie versorgen die
v.setLayoutParams()
Methode eine LayoutParams Objekt, abhängig von der container, die Sie gewählt haben (AbsoluteLayout, LinearLayout, etc.)Hier den thread auf stackOverflow auf
Wie wollen Sie setLayoutParams() für eine Bildansicht?
deckt es etwas ab.
Zum Beispiel:
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(30, 30);
yourImageView.setLayoutParams(layoutParams);
bedeutet, dass Sie brauchen, um zu definieren ein LinearLayout.LayoutParams (oder in deinem Fall ein FrameLayout.layoutParams-Objekt) zu übergeben, um die setLayoutParams Methode des v-Objekts.
In
http://developer.android.com/reference/android/widget/FrameLayout.html
fast macht es Aussehen wie Sie könnten Fragen, Ihr v:
generateDefaultLayoutParams () über diese Methode, wenn Sie nicht definiert, wird der Parameter speziell.
Aber es ist spät, und diese links sind meine Augen Bluten ein wenig. Lassen Sie mich wissen, wenn Sie nhelp alle 🙂