为什么Button在改变颜色后会失去原来的行为?

Swe*_*per 6 android button android-theme

我正在写一个Android应用程序,现在我正在设计它.我正在使用一个自定义主题,这是一个孩子Theme.Holo.Light.我非常喜欢,Theme.Holo.Light因为当您单击并按住它时,它的按钮会产生特殊效果.如下图中的下方按钮:

不点击: 在此输入图像描述

点击: 在此输入图像描述

上部按钮已更改颜色.现在,当我点击该按钮时,它没有那种效果.我真的不明白为什么.任何人都可以告诉我为什么会这样,我怎么能用彩色按钮获得相同的效果?

而且,彩色按钮看起来更胖.

Eoi*_*oin 1

这是因为按钮使用选择器根据单击的状态显示不同的颜色/效果/绘图。您可以查看Color State List Resource上的链接。

要创建您自己的,您必须创建一个 slecetor cml 文件并将其放入您的可绘制文件夹中。

例如。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/shape_btn_default_normal_gray" android:state_enabled="true" android:state_pressed="false"/>
    <item android:drawable="@drawable/shape_btn_default_pressed_gray" android:state_pressed="true"/>
    <item android:drawable="@drawable/shape_btn_default_disabled_gray"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

或带有颜色

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/dark_green" android:state_enabled="true" android:state_pressed="false"/>
    <item android:drawable="@color/light_green" android:state_pressed="true"/>
    <item android:drawable="@color/gray"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

要应用此功能,您必须在布局 xml 中设置背景可绘制元素,如下所示。

<Button
    android:id="@+id/my_btn"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="Some text"
    android:background="@drawable/selector_btn_default_gray"/>
Run Code Online (Sandbox Code Playgroud)