更改样式仅部分工作:文本颜色更改,背景不更改

时间:2013-05-09 09:04:08

标签: java android styles android-styles

当有人点击它时,我正试图改变Button的样式。我想将背景更改为文本颜色。但是,仅更改文本颜色。由此我得出结论 的样式已经改变,但由于某种原因,背景无法被覆盖。

我在onClick处理程序中使用此代码:

Button send_button = (Button) findViewById(R.id.button1);
send_button.setTextAppearance(context, R.style.activeButtonTheme);

我的styles.xml中的相关样式是:

<style name="buttonTheme">
    <item name="android:background">@color/white</item>
    <item name="android:textColor">@color/orange</item>
    <item name="android:paddingTop">6dp</item>
    <item name="android:paddingBottom">6dp</item>
    <item name="android:layout_margin">2dp</item>
</style>

<style name="activeButtonTheme" parent="@style/buttonTheme">
    <item name="android:background">@color/orange</item>
    <item name="android:textColor">@color/white</item>
</style>

这里有什么问题?

我不想从Java设置背景颜色,我只想改变Java中的样式。

1 个答案:

答案 0 :(得分:1)

为此目的使用selector。查看this link了解详细信息(自定义背景部分)关于代码,在资源目录中定义相应的 selector.xml 文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/drawable_for_dissabled_button" android:state_enabled="false"/>
    <item android:drawable="@drawable/drawable_for_pressed_button" android:state_enabled="true" android:state_pressed="true"/>
    <item android:drawable="@drawable/drawable_for_enabled_button" android:state_enabled="true" android:state_focused="true"/>
    <item android:drawable="@drawable/drawable_for_enabled_button" android:state_enabled="true"/>
</selector>

将刚创建的选择器分配给布局文件中的按钮:

<Button android:id="@+id/your_button_id"
    android:background="@drawable/selector" />