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

时间:2015-08-28 05:09:02

标签: android button android-theme

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

不点击: enter image description here

点击: enter image description here

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

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

3 个答案:

答案 0 :(得分:1)

这就是材料设计的“涟漪效应”。
您已经为这种效果定义了自己的风格。
下面的链接可以帮助您或者您可以在StackOverflow上搜索许多其他答案。
Material effect on button with background color

答案 1 :(得分:1)

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

要创建自己的文件,您必须创建一个slecetor cml文件并将其放在drawables文件夹中。

例如。

<?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>

或带颜色

<?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>

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

<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"/>

答案 2 :(得分:1)

点击(在你的第二张图片中)按钮显示与上面相同的比例时,它不会失去你的行为......所以默认情况下,背景设置为显示它是button (与padding左右相似),可以更改为显示oncklick效果... 因此,当您将所需背景设置为按钮时...它会对当前所处的内容进行完全更改,然后您必须手动设置onclick效果..