以编程方式添加按钮不会遵循文本颜色

时间:2015-09-02 12:52:41

标签: android xml button themes

我有一个按钮样式如下:

<style name="ButtonAppTheme" parent="android:Widget.Holo.Light.Button">
      <!-- ORIGINAL: <item name="android:background">@drawable/apptheme_btn_default_holo_light</item> -->
      <item name="android:background">@drawable/x_button_background</item>
      <item name="android:textColor">@drawable/x_button_text</item>
      <item name="android:textSize">@dimen/master_fontsize_mid</item>
      <item name="android:paddingLeft">@dimen/button_padleft</item>
      <item name="android:paddingRight">@dimen/button_padright</item>
      <item name="android:singleLine">true</item>
  </style>

在主题中设置如下:

<item name="android:buttonStyle">@style/ButtonAppTheme</item>

我在我的应用程序的清单中设置了这个主题。但是,当我以编程方式添加按钮时:

btn = new Button(activity);
LayoutParams params = new LayoutParams(R.dimen.button_height, LayoutParams.MATCH_PARENT);
btn.setLayoutParams(params);
btn.setText("MyButton");
layout.addView(btn);

背景drawable渲染得很好,但是文本是白色的,而不是它应该是可绘制的(灰色和红色取决于状态)。如何确保以编程方式添加的按钮完全符合此样式?

1 个答案:

答案 0 :(得分:1)

使用以下代码:

 <Button
     android:id="@+id/button1"
     style="@style/ButtonAppTheme"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="Button" />

编程,

Button b = new Button(getApplicationContext(), null, R.style.ButtonAppTheme);