我的问题很简单,

如何设置我的按钮layout_gravity编程?

我在互联网上找到了这个,但它只是抛出了一个空指针异常:

 Button MyButton = new Button(this);

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


    MyLinearLayout.addView(MyButton);

有解决方案吗?


当前回答

试试这段代码

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

or

    btn.setGravity(Gravity.TOP);

其他回答

我有一个类似的问题,以编程方式设置layout_gravity按钮在GridLayout。

诀窍是在按钮被添加到父(GridLayout)后在按钮layoutParams上设置重力,否则重力将被忽略。

grid.addView(button)
((GridLayout.LayoutParams)button.getLayoutParams()).setGravity(int)

修改现有的布局参数并重新设置布局参数

//Get the current layout params and update the Gravity
(iv.layoutParams as FrameLayout.LayoutParams).gravity = Gravity.START
//Set layout params again (this updates the view)
iv.layoutParams = layoutParams

我讨厌复活旧线程,但这是一个没有正确回答的问题,而且我自己也遇到过这个问题。

下面是比较长的部分,如果你只对答案感兴趣,请一直向下滚动到代码:

Android:gravity和Android:layout_gravity工作方式不同。这是我读过的一篇帮助我的文章。

文章要点:重力在高度/宽度分配后影响视图。因此重心不会影响FILL_PARENT(认为它是自动边距)完成的视图。layout_gravity centre将影响视图FILL_PARENT(认为它是auto pad)。

基本上,android:layout_gravity不能通过编程方式访问,只能访问android:gravity。 在OP的情况下,我的情况下,接受的答案没有把按钮垂直中心。

为了完善Karthi的回答:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
button.setLayoutParams(params);

链接到LinearLayout.LayoutParams。

android:layout_gravity显示“No related methods”,意思是不能通过编程方式访问。 而重力在课堂上是一个场。

我从LinearLayout切换过来。LayoutParams to RelativeLayout。LayoutParams来最终得到我在创建的自定义圆环视图上想要的结果。

但是你用的不是gravity而是addRule

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

    mCircleParams.addRule(RelativeLayout.CENTER_IN_PARENT);

如果你需要为视图设置重力,请使用以下方法

Button b=new Button(Context);
b.setGravity(Gravity.CENTER);

用于设置按钮的layout_gravity 为布局参数使用重力场

LayoutParams lp=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
lp.gravity=Gravity.CENTER;

试试这个 希望天气晴朗 谢谢