0

当有人单击它时,我正在尝试更改 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 中更改样式。

4

1 回答 1

1

用于selector此目的。检查此链接以获取详细信息(自定义背景部分)关于您的代码,在您的资源目录中定义适当的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" />
于 2013-05-09T10:38:04.447 回答