3

单击按钮时,我需要为按钮添加边框,并且我需要按钮的背景(我远程获取,因此无法使用R.drawable.picture等)以保持原样。

简而言之,当单击时,我想为我的(自定义背景)按钮添加一个边框。

我该怎么做呢?我已经阅读了很多关于边框、按钮、形状、选择器等的页面和问题,但其中大多数都涉及 xml,但是因为在启动应用程序之前我没有按钮的背景,我想我是绑定到以编程方式添加和删除边框。同样,我需要保留自定义按钮背景,但添加一个小的 onclick 边框。

注意:我在所有不同尺寸的按钮上都使用它。所以应用一个drawable不是一个真正的选择。我想我一定会在单击的按钮周围画一个矩形。

注意 2:再次,我有一个必须应用的背景。边框只是 onclick 事件的一个小指标。所以我不能输入背景是某种选择器的 XML

4

3 回答 3

5

btn.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
    <shape>
        <solid
            android:color="#343434" />
        <stroke
            android:width="1dp"
            android:color="#171717" />
        <corners
            android:radius="3dp" />
        <padding
            android:left="5dp"
            android:top="5dp"
            android:right="5dp"
            android:bottom="5dp" />
    </shape>
</item>
<item>
    <shape>
        <gradient
            android:startColor="#343434"
            android:endColor="#275296"
            android:angle="270" />
        <stroke
            android:width="0dp"
            android:color="#171717" />
        <corners
            android:radius="4dp" />
        <padding
            android:left="5dp"
            android:top="5dp"
            android:right="5dp"
            android:bottom="5dp" />
    </shape>
</item>
</selector>

单击时,此处的 stroke 属性将显示为按钮的边框。

将其保存在可绘制文件夹中。并使用如下

<Button 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/btn"
    android:textColor="@color/white"
    android:text="Button"/>
于 2012-09-18T10:01:00.080 回答
0

您可以尝试9.png在透明区域周围设置一个黑色边框。您可以使用选择器将其应用于按钮的“按下”状态。

于 2012-09-18T09:57:55.953 回答
0

您可以在 xml 中使用 2 层定义 layer_list:一层用于您的图像,另一层用于您的边框,并将此层列表用作按钮按下状态的可绘制对象

于 2012-09-18T09:59:10.930 回答