2015-08-28 55 views
6

我正在编写一个Android应用程序,现在我正在设计它。我正在使用一个自定义主题,它是Theme.Holo.Light的子项。我非常喜欢Theme.Holo.Light,因为它的按钮在点击并按住时有特殊效果。就像下面的图片下方按钮:为什么按钮在改变颜色后会失去原来的行为?

不要点击: enter image description here

点击: enter image description here

上按钮已经变了颜色。现在当我点击那个按钮时,它没有那个效果。我真的不明白为什么。任何人都可以告诉我为什么会发生这种情况,如何用彩色按钮获得相同的效果?

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

+0

我觉得你的效果和颜色的颜色按钮是相同的,所以你没有看到它。尝试将按钮的颜色更改为其他,并参见 –

回答

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。

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

“@ drawable/shape_btn_default_normal_gray”,“@ drawable/shape_btn_default_pressed_gray”等的定义在哪里? – Sweeper

+0

这是一个例子,你可以使用任何你喜欢的,可绘制的,颜色等。 – Eoin

+0

似乎并不像我可以把十六进制颜色,但 – Sweeper

1

它不会失去它的行为,你可以点击(在你的第二个图像)之后看到按钮显示相同的比例上面有...所以默认背景设置为表明它是button(与padding左右一样)并且可以更改为显示oncklick效果... 所以,当您将您的愿望背景设置为按钮时......您需要完全更改当前的内容,然后您必须手动设置onclick效果..

相关问题