我正在尝试以编程方式将背景资源添加到按钮,但是一旦我这样做,单击按钮时的突出显示效果就会消失。如何在仍然使用背景的同时恢复高光效果?
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);
代码设置背景但消除了突出显示效果。
答案 0 :(得分:0)
按钮(以及许多其他Android小部件)使用<selector>
drawable(SDK中的模拟是StateListDrawable
)。这实际上是一个Drawable容器,可以将不同的drawable映射到不同的状态:press,focused,disabled,normal等。如果你想替换按钮背景,你应该自己制作其中一个。
在此处详细了解:http://developer.android.com/design/style/touch-feedback.html