So zentrieren Sie eine benutzerdefinierte Ansicht auf Android?

8

Ich versuche, die Ansicht für verschiedene Auflösungen mithilfe des Layouts und der Schwerkrafteigenschaften zu zentrieren, aber es funktioniert nicht. Gibt es eine Möglichkeit, die benutzerdefinierte Ansicht über verschiedene Auflösungen horizontal zu zentrieren?

Muss ich etwas mit der onMeasure-Methode machen?

Hier ist eines der Dinge, die ich gerade versuche, die Ansicht ist links vom Zentrum.

%Vor%     
tresnotas 19.01.2012, 19:20
quelle

3 Antworten

1

Wenn Sie ein View in einem Layout wie FrameLayout haben, würden Sie View s layout_gravity auf center setzen. Verwechseln Sie es nicht mit gravity !

Es kann auch notwendig sein, onMeasure () zu überschreiben. Lesen Sie die Dokumentation , um zu entscheiden, ob Sie diese überschreiben müssen . Wenn Sie dies tun, beachten Sie, dass die Parameter mit View.MeasureSpec codiert sind.

    
Oderik 19.01.2012 20:59
quelle
0

Sie sollten dies in Ihrer benutzerdefinierten View-Klasse implementieren

%Vor%


Darin sollten Sie Höhe und Breite für Ihre benutzerdefinierte Ansicht berechnen. Wenn Sie Ihre benutzerdefinierte Ansicht im übergeordneten Layout zentralisieren müssen, stellen Sie Folgendes sicher:

  • benutzerdefinierte Ansichtshöhe! = übergeordnete Anzeigehöhe

UND / ODER

  • benutzerdefiniert Breite anzeigen! = übergeordnete Ansichtsbreite


Zum Beispiel:

%Vor%


Jetzt können Sie als nächstes Ihre benutzerdefinierte Ansicht verwenden:

%Vor%

P.S. Sie sehen, dass android:layout_centerHorizontal="true" keine Auswirkung hat. Der Grund dafür ist parent width in onMeasure anstatt die exakte Breite zu berechnen.

    
Iuliia Ashomok 30.05.2016 18:41
quelle
-1

Hier sehen Sie ein Beispiel, wie zwei Schaltflächen auf dem Bildschirm zentriert werden. Dies sollte auch mit Ihrer CustomView funktionieren.

%Vor%     
henrik 21.01.2012 14:42
quelle

Tags und Links