android - 如何创建一个只有一侧有描边的按钮,以便在按下按钮时颜色发生变化

标签 android xml button stroke

我想创建一个仅在按钮顶部带有黑色描边的按钮。在 stackoverflow 上有很多类似的问题,但我还想要一件事——按钮的颜色在按下时应该改变。 我无法将选择器与给定的答案一起使用 herehere .按钮背景的 xml 代码应该是什么 (android:background)? 提前致谢:)

我现在的代码,四面都有一个统一的笔划

<?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="@color/dark_red" />
        <stroke
            android:width="0.1dp"
            android:color="#fff" />
        <corners
            android:radius="0dp" />

    </shape>
</item>
<item>
    <shape>
        <gradient
            android:startColor="@color/red"
            android:endColor="@color/dark_red"
            android:angle="270" />
        <stroke
            android:width="0.1dp"
            android:color="#fff" />
        <corners
            android:radius="0dp" />

    </shape>
</item>

最佳答案

您可以使用layer-list来绘制您需要的困难背景。

您必须为选择器添加两个背景状态

unpressed_state.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/black" />
        </shape>
    </item>
    <item
        android:top="5dp">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white" />
        </shape>
    </item>
</layer-list>

和不同颜色的第二次按下状态的相同代码(只需将 @android:color/black 更改为您需要的任何内容)。它将是 prssed_state.xml

并且,在它为背景创建自己的选择器之后,您需要的所有东西 button_bg.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/pressed_state" android:state_pressed="true" />
    <item android:drawable="@drawable/unpressed_state" />
</selector>

现在只需将 button_bg 放在按钮的 android:background 属性中:

android:background="@drawable/button_bg"

关于android - 如何创建一个只有一侧有描边的按钮,以便在按下按钮时颜色发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25338016/

相关文章:

java - 反序列化类似 XML 的响应

java - 如何在 DOM 解析 XML 时从空元素中提取属性值?

android - 哪些用户的数据不得从使用我的应用程序的用户那里获取?

android - 自动完成在特定层次结构的 XML 文件中不起作用

java - 如何使用 DocuSign API 预填充服务器模板上的选项卡

html - 如何将 CSS 脚本添加到我的基本离线 html 站点?

ios - Xcode 根据按钮在新 View 中加载数据

java - 加速度计+按钮

android - Google Play 开发者分发协议(protocol)已更改

java - 如何在 MaterialCalendarView 中显示特定日期和时间的事件?