Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android自定义按钮按下时不需要闪烁的黑色边框_Android_Xml - Fatal编程技术网

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

Android自定义按钮按下时不需要闪烁的黑色边框,android,xml,Android,Xml,我遇到了一个奇怪的问题,我在网上找不到任何东西。我创建了一个自定义选择器,它有一个默认的布局列表,按下时会切换到另一个。它看起来像这样(button.xml): 这就是布局列表的外观 这是一个示例按钮 <Button android:layout_width="40dp" android:layout_height="40dp" android:background="@drawable/button" /> 现在的问题是按下按钮会创建一个随机的黑色边框,

我遇到了一个奇怪的问题,我在网上找不到任何东西。我创建了一个自定义选择器,它有一个默认的布局列表,按下时会切换到另一个。它看起来像这样(button.xml):


这就是布局列表的外观

这是一个示例按钮

<Button
   android:layout_width="40dp"
   android:layout_height="40dp"
   android:background="@drawable/button" />

现在的问题是按下按钮会创建一个随机的黑色边框,填充其宽度和高度(按住按钮会导致边框闪烁)。这不会发生在我的三星Galaxy标签A上,但会发生在我的索尼Xperia Z3+上。这是随机发生的,但当它发生时,它似乎会一直发生,直到我重新启动该活动,所以它要么在每次按下时发生,要么根本不发生,这取决于该活动是否被“窃听(?)”

我希望你能理解我的问题,英语不是我的母语。顺便说一句,我不会以编程方式对按钮做任何事情

谢谢


更新:我的一个朋友在他的手机上尝试了这个应用程序,这是一款较旧的htc,他得到了同样闪烁的边框。也曾在三星galaxy s5上试用过,但在该设备上没有。无法解决此问题。

请在您的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>
<?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>

在您的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>
<?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>

小语法错误
应该是
供其他想尝试的人使用。不过,这并没有解决我的问题,随机边界仍然以某种方式出现,但非常感谢您的尝试和帮助。:)小语法错误
应该是
供其他想尝试的人使用。不过,这并没有解决我的问题,随机边界仍然以某种方式出现,但非常感谢您的尝试和帮助。:)