我遇到一个奇怪的问题,我在网上找不到任何东西。我创建了一个自定义选择器,它具有默认的布局列表,并在按下时切换到另一个。看起来像这样(button.xml):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- pressed -->
<item android:drawable="@drawable/fbutton_pressed" android:state_pressed="true"/>
<!-- default -->
<item android:drawable="@drawable/fbutton_unfocused"/>
</selector>
这些布局列表看起来像http://pastebin.com/ezZB8a8U。
这是一个示例按钮
<Button
android:layout_width="40dp"
android:layout_height="40dp"
android:background="@drawable/button" />
现在的问题是,按下按钮会创建一个随机的黑色边框,填充其宽度和高度(按住按钮会使边框闪烁)。这不会出现在我的三星Galaxy Tab A上,但它确实在我的索尼Xperia Z3 +上。这是随机发生的,但是当它发生时似乎一直发生,直到我重新启动活动,所以要么每次按下都要发生,或者根本不发生,这取决于活动是否“被窃听(?)”。
我希望你理解我的问题,英语不是我的母语。顺便说一下,我没有以编程方式对按钮做任何事情。
谢谢!
更新:我的一个朋友在他的手机上尝试了这个应用程序,这是一个较旧的htc,他得到了相同的闪烁边框。也尝试在三星galaxy s5和该设备上它不会发生。一直无法解决..
答案 0 :(得分:0)
在你的button.xml上试试这段代码:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- pressed -->
<item android:state_pressed="true"/>
<layer-list>
<item
android:bottom="2dp"
android:left="2dp"
android:right="2dp"
android:top="2dp">
<shape android:shape="rectangle" >
<stroke
android:width="1dp"
android:color="#BFBFBF" />
<gradient
android:angle="90"
android:centerColor="#e5f0ff"
android:endColor="#b3d3ff"
android:startColor="#99c4ff" />
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
</shape>
</item>
</layer-list>
</item>
<!-- unpressed -->
<item android:state_enabled="true">
<layer-list>
<item
android:bottom="2dp"
android:left="2dp"
android:right="2dp"
android:top="2dp">
<shape android:shape="rectangle" >
<stroke
android:width="1dp"
android:color="#BFBFBF" />
<gradient
android:angle="90"
android:centerColor="#F4F4F4"
android:endColor="#E5E5E5"
android:startColor="#d3d3d3" />
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
</shape>
</item>
</layer-list>
</item>
</selector>