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);
我无法动态设置 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);