2

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

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);

代码设置了背景,但去掉了高亮效果。

4

1 回答 1

0

按钮(和许多其他 Android 小部件)使用<selector>可绘制对象(SDK 中的模拟是 a StateListDrawable)。这实际上是一个 Drawable 容器,它将不同的可绘制对象映射到不同的状态:按下、聚焦、禁用、正常等。如果您想替换按钮背景,您应该自己制作其中一个。

在此处阅读更多信息:http: //developer.android.com/design/style/touch-feedback.html

于 2013-04-11T03:16:43.240 回答