按下时,Android自定义按钮不需要闪烁的黑色边框

时间:2015-12-11 08:18:20

标签: android xml

我遇到一个奇怪的问题,我在网上找不到任何东西。我创建了一个自定义选择器,它具有默认的布局列表,并在按下时切换到另一个。看起来像这样(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和该设备上它不会发生。一直无法解决..

1 个答案:

答案 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>