Die Schwerkraft einer Ansicht programmgesteuert einstellen

Ich arbeite an einer View über Android-Quellcode. Ich habe mich gefragt, wie können wir mehrere Gravities, eine benutzerdefinierte View einrichten

Das ist das XML

 <com.android.systemui.statusbar.policy.Clock android:id="@+id/clock" android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:layout_width="wrap_content" android:layout_height="match_parent" android:singleLine="true" android:paddingLeft="6dip" android:gravity="center_vertical|left" /> 

Wie Sie sehen, ist die Standard-Schwerkraft center_vertical | left, also sollte mein Java-Code so etwas sein

  View clock = mStatusBarView.findViewById(R.id.clock); if (clock != null) { SOMEHOW SET GRAVITY -> mCenterClock ? Gravity.CENTER : (Gravity.CENTER_VERTICAL | Gravity.LEFT); } 

SetGravity-Methode funktioniert nicht auf View . Also gibt es eine Alternative, die Schwerkraft einzustellen, ohne die Breite und die Höhe standardmäßig zu verlieren.

Danke im Voraus.

  • Soft-Tastaturüberlappung mit EditText-Feld
  • Wie funktioniert ImageView nur einen Teil seines Inhalts, wenn Invalidate (Rect) aufgerufen wird?
  • TextView in ViewPager fängt Berührungsereignisse ab
  • Bestimmen Sie, ob eine Ansicht auf dem Bildschirm ist - Android
  • Wie klone ich eine Ansicht?
  • Android-Set Höhe und Breite der benutzerdefinierten Ansicht programmgesteuert
  • Ändern einer Bitmap auf einen festen Wert, aber ohne das Seitenverhältnis zu ändern
  • Android: Bitmap aus überdimensionierter Ansicht
  • 3 Solutions collect form web for “Die Schwerkraft einer Ansicht programmgesteuert einstellen”

    Seit com.android.systemui.statusbar.policy.Clock erweitert TextView nur werfen sie auf eine TextView und legen Sie die Schwerkraft.

      TextView clock = (TextView) mStatusBarView.findViewById(R.id.clock); clock.setGravity(mCenterClock ? Gravity.CENTER : (Gravity.CENTER_VERTICAL | Gravity.LEFT)); 

    Ref: Quellcode

    Hast du es versucht?

     clock.setGravity(Gravity.CENTER | Gravity.CENTER_VERTICAL); 

    Bearbeiten:

    Da kannst du setGravity für eine einfache View , so etwas tun,

    Du kannst ein RelativeLayout und so eine Regel setzen …

     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); params.addRule(RelativeLayout.CENTER_HORIZONTAL|RelativeLayout.CENTER_IN_PARENT, clock.getId()); 
      com.android.systemui.statusbar.policy.Clock clock = (com.android.systemui.statusbar.policy.Clock)mStatusBarView.findViewById(R.id.clock); clock.setGravity(Gravity.CENTER_VERTICAL); 

    Versuchen Sie den obigen Code und entfernen Sie View clock = mStatusBarView.findViewById (R.id.clock);

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.