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?

2voto

Abhishek Garg Punkte 2672

Die meisten der oben genannten Antworten sind richtig, so dass eine Helper-Methoden, damit Sie es verwenden können direkt in Ihrem Projekt verwenden können.

einstellen. layout_gravity programmtechnisch

// gravity types : Gravity.BOTTOM, Gravity.START etc.
// view : can be any view example : button, textview, linearlayout, image etc.

// for single view
   public static void setLayoutGravity(int gravity, View view){
     ((LinearLayout.LayoutParams) view.getLayoutParams()).gravity = gravity;
    }

// for mulitple views
  public static void setLayoutGravity(int gravity, View ...view){
        for(View item : view)
            ((LinearLayout.LayoutParams) item.getLayoutParams()).gravity = gravity;
    }

0voto

Manthan Patel Punkte 1505
 int width=getResources().getDisplayMetrics().widthPixels; 
 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams
                    (width, width);

            params.gravity = Gravity.CENTER;

           iv_main_text = new HTextView(getContext());
            iv_main_text.setLayoutParams(params);
            iv_main_text.setBackgroundColor(Color.BLUE);
            iv_main_text.setTextSize(60);
            iv_main_text.setGravity(Gravity.CENTER);
            iv_main_text.setTextColor(Color.BLACK);

0voto

VIVEK CHOUDHARY Punkte 362
FloatingActionButton sendFab = new FloatingActionButton(this);
    FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    layoutParams.setMargins(32, 32, 32, 32);
    layoutParams.gravity = Gravity.END|Gravity.BOTTOM;
    sendFab.setLayoutParams(layoutParams);
    sendFab.setImageResource(android.R.drawable.ic_menu_send);

0voto

user3886197 Punkte 1

Ich wechselte von LinearLayout.LayoutParams zu RelativeLayout.LayoutParams, um endlich das Ergebnis zu erhalten, das ich auf einem benutzerdefinierten circleview wünschte ich erstellt.

Aber statt der Schwerkraft verwenden Sie addRule

RelativeLayout.LayoutParams mCircleParams = new RelativeLayout.LayoutParams(circleheight,circleheight);

    mCircleParams.addRule(RelativeLayout.CENTER_IN_PARENT);

-1voto

Versuchen Sie diesen Code

    Button btn = new Button(YourActivity.this);
    btn.setGravity(Gravity.CENTER | Gravity.TOP);
    btn.setText("some text");

ou

    btn.setGravity(Gravity.TOP);

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