我正在以编程方式为AlertDialog创建一个带有一些按钮的LinearLayout。
我想要这样做:
<LinearLayout android:id="@+id/footer" android:layout_width="fill_parent"
style="@android:style/ButtonBar">
但是使用这样的代码:
LinearLayout buttons = new LinearLayout(parentContext);
buttons.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams buttonsParams =
new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
topLayout.addView(buttons, buttonsParams);
buttons.setLayoutParams(buttonsParams);
Button btnAdd = new Button(context);
btnAdd.setText("Add");
如何以程序方式设置按钮的样式(使用按钮栏)?
答案 0 :(得分:47)
希望我加入聚会还为时不晚:)
嗯,样式可以在初始化阶段应用于View
。例如:
LinearLayout button = new LinearLayout(context, null, android.R.style.ButtonBar);
答案 1 :(得分:31)
这对我有用:
int buttonStyle = R.style.your_button_style;
Button button = new Button(new ContextThemeWrapper(context, buttonStyle), null, buttonStyle)
答案 2 :(得分:12)
这是实际提供我所寻找的唯一答案:http://belencruz.com/2013/04/set-styles-programmatically-in-android/
基本上,创建一个布局XML文件,其中只包含具有所需样式的<Button/>
元素。然后,以编程方式对其进行充气,只需自定义按钮文本即可。
有些事情:
<?xml version="1.0" encoding="utf-8"?>
<Button style="@style/your_custom_style_here"/>
在代码中:
Button button = (Button)getLayoutInflater().inflate(R.layout.your_custom_button_layout_file, null);
button.setText("Your Text");
答案 3 :(得分:5)
而不是waqaslams
LinearLayout button = new LinearLayout(context, null, android.R.style.ButtonBar);
(也就是说,根据评论判断,API可靠)我也从这里读过ridoys的答案 <Android Button Styling Programatically]是
transferBtn.setBackgroundResource(R.layout.buttonstyle);
(揭露上述答案,因为其中一个也适用于您,具体取决于您使用的API版本),
但这对我有用(请注意从&#34;布局&#34;到&#34; drawable&#34;):
Button b = new Button(this);
b.setBackgroundResource(R.drawable.button_custom_green);
(来自[How to programmatically setting style attribute in a view)
的回答答案 4 :(得分:2)
AirBnB的Paris库非常适合此操作,可以进行如下编程配置:
Paris.styleBuilder(textView)
.add(R.style.MyGreenTextView)
.textSizeRes(R.dimen.my_text_size_small)
.apply();
答案 5 :(得分:0)
在我的情况下,当我将样式传递到Button
构造函数中时,样式根本没有加载。
似乎是因为我使用的是材料设计视图。这是什么解决了我的问题:
val themeWrapper = ContextThemeWrapper(
context,
R.style.AppTheme_ButtonPrimary // my button style
)
val button = MaterialButton(themeWrapper)
请注意,创建的是MaterialButton
,而不是Button
。
我在How to specify a style for a view programmatically in Android找到了这个解决方案。