404 Stimmen

Wie kann man layout_gravity programmatisch einstellen?

Meine Frage ist einfach,

Wie kann ich meine Schaltflächen layout_gravity programmatisch einstellen?

Ich fand dies im Internet, aber es wirft mich einfach eine Nullpointer-Ausnahme:

 Button MyButton = new Button(this);

    LinearLayout.LayoutParams  lllp=(LinearLayout.LayoutParams)MyButton.getLayoutParams();
    lllp.gravity=Gravity.RIGHT;
    MyButton.setLayoutParams(lllp); 

    MyLinearLayout.addView(MyButton);

Gibt es eine Lösung?

17voto

vovahost Punkte 29502

Wenn Sie die layou_gravity einer bestehenden Ansicht tun dies:

((FrameLayout.LayoutParams) view.getLayoutParams()).gravity = Gravity.BOTTOM;

Denken Sie daran, die richtige LayoutParams basierend auf dem Layouttyp, in dem sich Ihre Ansicht befindet. Bsp:

LinearLayout.LayoutParams

13voto

Hitesh Sahu Punkte 37527

KOTLIN setzt mehr als eine Schwerkraft auf FrameLayout, ohne die Größe zu ändern:

     // assign more than one gravity,Using the operator "or"
    var gravity = Gravity.RIGHT or Gravity.CENTER_VERTICAL
     // update gravity
    (pagerContainer.layoutParams as FrameLayout.LayoutParams).gravity = gravity
     // refresh layout
     pagerContainer.requestLayout()

10voto

CodeFlakes Punkte 3641

Diese Frage ist alt, aber ich hatte gerade das gleiche Problem und habe es so gelöst

LayoutParams lay = new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)
lay.gravity = Gravity.CENTER;

5voto

Cheng Punkte 316

Wenn Sie eine Ansicht in die Mitte des Elternteils setzen möchten, können Sie den folgenden Code verwenden.

public class myLayout extends LinearLayout {

    public myLayout(Context context) {
      super(context);

      RelativeLayout vi = (RelativeLayout) ((LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
            R.layout.activity_main, null);
      LinearLayout.LayoutParams cc = new LinearLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
      cc.gravity = Gravity.CENTER;
      this.setGravity(Gravity.CENTER);
      this.addView(vi);
  }
}

Dieser Codeabschnitt sorgt dafür, dass LinearLayout die ersten Ansichtselemente in die Mitte des übergeordneten Elements setzt. Also, wir System nicht berücksichtigen die anfängliche Breite und Höhe zu arrangieren Ansicht in der Mitte. Ich mache den Codeabschnitt gut.

5voto

alin0509 Punkte 401

Ich benutze so etwas: (Xamarin und C#-Code)

  LinearLayout linLayout= new LinearLayout(this); 
    linLayout.SetGravity(GravityFlags.Center);

    TextView txtView= new TextView(this);  
     linLayout.AddView(txtView); 

die SetGravity setzt meine textView in der Mitte des Layouts. Also SetGravity Layout-Eigenschaften beziehen sich auf Layout Inhalt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X