Android Button setBackground()导致高亮效果消失

时间:2013-04-11 03:06:52

标签: android android-layout android-button

我正在尝试以编程方式将背景资源添加到按钮,但是一旦我这样做,单击按钮时的突出显示效果就会消失。如何在仍然使用背景的同时恢复高光效果?

button_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android" >
  <item android:drawable="@layout/avail_button_solid" />        
  <item android:drawable="@layout/avail_button_shape" />
</layer-list>

avail_button_solid.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <solid android:color="#ababab" />   
</shape>  

avail_button_shape.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <solid android:color="#ffffff" /> 
  <stroke android:width="1dp" android:color="#ff000000" />  
</shape>

Java代码:

b.setBackgroundResource(R.layout.button_layout);

代码设置背景但消除了突出显示效果。

1 个答案:

答案 0 :(得分:0)

按钮(以及许多其他Android小部件)使用<selector> drawable(SDK中的模拟是StateListDrawable)。这实际上是一个Drawable容器,可以将不同的drawable映射到不同的状态:press,focused,disabled,normal等。如果你想替换按钮背景,你应该自己制作其中一个。

在此处详细了解:http://developer.android.com/design/style/touch-feedback.html