Ist es möglich, die absolute Position einer Ansicht in Android festzulegen? (Ich weiß, dass es eine gibt AbsoluteLayout
, aber sie ist veraltet ...)
Wenn ich beispielsweise einen Bildschirm mit 240 x 320 Pixel habe, wie kann ich dann einen Bildschirm mit einer Größe von 20 x 20 Pixel hinzufügen, ImageView
sodass sich seine Mitte an der Position (100.100) befindet?
view.setTranslationX()
oderview.offsetLeftAndRight()
Antworten:
Sie können RelativeLayout verwenden. Angenommen, Sie möchten eine 30x40-Bildansicht an der Position (50,60) in Ihrem Layout. Irgendwo in Ihrer Tätigkeit:
Mehr Beispiele:
Platziert zwei 30x40 ImageViews (eine gelbe, eine rote) bei (50,60) bzw. (80,90):
Platziert eine 30x40 gelbe ImageView bei (50,60) und eine weitere 30x40 rote ImageView <80,90> relativ zur gelben ImageView:
quelle
ImageView
es nicht besser, eine zu verwenden, da ich mehrere zu stellen habeFrameLayout
?Im Allgemeinen können Sie eine Ansicht an einer bestimmten Position mithilfe eines FrameLayout als Container hinzufügen, indem Sie die Attribute leftMargin und topMargin angeben .
Im folgenden Beispiel wird eine 20 x 20 Pixel große ImageView an Position (100.200) platziert, wobei ein FrameLayout als Vollbildcontainer verwendet wird:
XML
Aktivität / Fragment / Benutzerdefinierte Ansicht
Dies reicht aus, da Ränder als absolute (X, Y) Koordinaten ohne RelativeLayout verwendet werden können:
quelle
Um Andy Zhangs Antwort oben zu ergänzen, können Sie rl.addView param geben und später Änderungen daran vornehmen, also:
Könnte genauso gut geschrieben werden als:
Wenn Sie also die Variable params beibehalten, können Sie das Layout von iv jederzeit ändern, nachdem Sie es zu rl hinzugefügt haben.
quelle
Eine sauberere und dynamischere Methode, ohne Pixelwerte im Code fest zu codieren.
Ich wollte einen Dialog (den ich im Handumdrehen aufblase) genau unter einer angeklickten Schaltfläche positionieren.
und löste es so:
Sie müssen jedoch sicherstellen, dass das übergeordnete Layout von
myView
eine Instanz von istRelativeLayout
.vollständigerer Code:
Auf diese Weise können Sie weiterhin erwarten, dass sich die Zielansicht an alle Layoutparameter anpasst, die mithilfe von Layout-XML-Dateien festgelegt wurden, anstatt diese Pixel / dps in Ihrem Java-Code fest zu codieren.
quelle
Platzieren Sie eine beliebige Ansicht auf Ihren gewünschten X & Y- Punkt
Layoutdatei
Java-Klasse
Getan
quelle
Nur für den Fall, dass es jemandem hilft, können Sie diesen Animator ViewPropertyAnimator wie folgt ausprobieren
Credits auf bpr10 Antwort
quelle
Versuchen Sie den folgenden Code, um die Ansicht an einem bestimmten Ort festzulegen: -
quelle
Mein Code für Xamarin , ich verwende FrameLayout für diesen Zweck und folgendes ist mein Code:
Es war nützlich für mich, weil ich die Eigenschaft der Ansicht brauchte, um sich aufgrund ihres Aussehens zu überlappen, z. B. werden die Ansichten übereinander gestapelt .
quelle