Android:以编程方式设置的按钮重力不起作用

Android : Button gravity set programmatically not working

我无法动态设置 Button 的文本重力。

我的按钮是 LinearLayout,垂直方向。

当我在 xml 文件中创建按钮时,一切都按预期工作:

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical|start"
    android:text="My button"/>

但是当我动态创建相同的按钮时,文本保持居中而不是左对齐:

Button myButton = new Button(context);
myButton.setText("My button");
myLinearLayout.addView(myButton);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) myButton.getLayoutParams();
params.width = LinearLayout.LayoutParams.MATCH_PARENT;
params.height = LinearLayout.LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.CENTER_VERTICAL | Gravity.START;

您知道为什么当我以编程方式创建按钮时文本仍然居中吗? 为了您的信息,我需要在 API 16(所以 myButton.setTextAlignment() 不会工作)。

感谢您的帮助!

按如下方式更改上面的代码,让我知道其中哪些有效:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
params.gravity = Gravity.CENTER_VERTICAL | Gravity.START;

Button myButton = new Button(context);
myButton.setText("My button");
myButton.setLayoutParams(params);

myLinearLayout.addView(myButton);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
params.gravity = Gravity.CENTER_VERTICAL | Gravity.START;

Button myButton = new Button(context);
myButton.setText("My button");

myLinearLayout.addView(myButton, params);

Button myButton = new Button(context);
myButton.setText("My button");
myButton.setGravity(Gravity.CENTER_VERTICAL | Gravity.START);
myLinearLayout.addView(myButton);