如何为具有@drawable图像的选定和按下状态中的按钮设置背景颜色

时间:2011-08-09 12:07:18

标签: android button

buttons screen shot

在上图中,您可以看到第一个主页按钮处于按下状态。它没有背景颜色,我需要它是黑色的(最好是阴影,类似于其他按钮显示的默认颜色,同时保持图像)。我还需要将文本颜色更改为白色。

我有XML代码,可以根据状态更改图像,但我完全不知道如何同时更改背景颜色。

我对这个特定按钮的代码是:

<?xml version="1.0" encoding="utf-8"?>
<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
        android:drawable="@drawable/ic_tab_about_pressed" /> <!-- pressed -->
    <item android:state_selected="true"
        android:drawable="@drawable/ic_tab_about_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
        android:drawable="@drawable/ic_tab_about_pressed" /> <!-- pressed -->
    <item android:drawable="@drawable/ic_tab_about_unpressed" /><!-- default/unchecked -->
</selector>

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MnuBtnStyle" parent="android:style/Widget.Button">
    <item name="android:ellipsize">marquee</item>
    <item name="android:scrollHorizontally">true</item>
    <item name="android:singleLine">true</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_marginTop">1dip</item> 
        <item name="android:layout_marginBottom">1dip</item>
        <item name="android:textSize">10dp</item>
    <item name="android:layout_weight">1</item>
        <item name="android:textColor">#000000</item>
        <item name="android:typeface">monospace</item>
    </style>
</resources>

我怎么能做到这一点?

更新

我对按钮的要求是:

  1. 我必须能够为不同的状态更改图像
  2. 我必须能够使用字符串或代码中更改文本
  3. 我必须能够将按钮面颜色设置为默认状态和不同状态。
  4. 我是否需要创建一个新的自定义控件才能实现此目的? 如果是这样,那么我最好的方法是什么,请记住这是我的第一个Android项目?

1 个答案:

答案 0 :(得分:0)

尝试使用ImageButton代替Button:

<ImageButton
android:layout_width="60dip"
android:layout_height="60dip"
android:src="@drawable/state_btn_icon"
android:background="@drawable/state_btn_background"/>


state_btn_icon.xml定义按钮图标的不同状态

state_btn_background定义背景的不同状态