Android 按钮上的边框颜色

Posted

技术标签:

【中文标题】Android 按钮上的边框颜色【英文标题】:Border color on Android button 【发布时间】:2013-10-01 09:05:30 【问题描述】:

我创建了一个按钮并设置了背景颜色和文本颜色,如下所示。我的问题是:如何设置按钮边框颜色?我想将边框颜色设置为白色

这是我res -> layout -> main_nav.xml中的按钮

<Button 
        android:id="@+id/btn_emergency"
        style="@style/buttonStyle"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:text="Contact and Emergency" 
        android:onClick="onClickHandleStates" />

这是res -&gt; values -&gt; styles 中的相关样式。前 2 个“项目”可以自行正常工作。最后一个“项目”是我尝试将按钮边框更改为白色但没有成功。

<!-- The button styles -->
<style name="buttonStyle">
    <item name="android:textColor">#ffffff</item>
    <item name="android:background">#80000000</item>

    <item name="android:button">
        <shape
            android:shape="rectangle" >
            <stroke
                android:
                android:color="#ffffff" />  
        </shape>
    </item>
</style>

【问题讨论】:

【参考方案1】:

使用&lt;stroke&gt; 元素。在 res/drawable 文件夹中添加这个 xml 文件作为 button_border.xml:

 <?xml version="1.0" encoding="utf-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient android:startColor="#FFFFFF" 
       android:endColor="#00FF00"
       android:angle="270" />
    <corners android:radius="3dp" />
    <stroke android: android:color="#ffffff" />
 </shape>

然后调用它

<Button
   android:id="@+id/button1"
   android:layout_
   android:layout_
   android:layout_margin="10dp"
   android:background="@drawable/button_border"
   android:text="Button" 
/>

【讨论】:

android:background 定义中,Android Studio 1.5 SDK 23 建议“在其他配置中覆盖资源...”。奇怪 button_border - 不是 button_boarder。它可能无关紧要 - 只是碰巧注意到它。【参考方案2】:

试试这个

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<corners android:radius="1dp" />

<stroke
    android:
    android:color="#ffffff" />

</shape>

【讨论】:

【参考方案3】:

您可以使用此在线按钮生成器来自定义您的按钮http://angrytools.com/android/button/

【讨论】:

【参考方案4】:

尝试材质按钮

根据需要设置 app:strokeWidth、app:strokeColor

<com.google.android.material.button.MaterialButton
    android:layout_
    android:layout_
    style="@style/Widget.MaterialComponents.Button.OutlinedButton"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:strokeWidth="0.6dp"
    app:cornerRadius="2dp"
    android:text="Reassign"
    android:textColor="@color/colorAccent"
    app:strokeColor="@color/colorAccent"

    />

注意:您需要为材质小部件添加依赖项

//Material Components for Android
implementation 'com.google.android.material:material:1.0.0'

【讨论】:

它对我有用。来自 shivang Trivedi 的选定答案在 androidx 中不起作用。奇怪【参考方案5】:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<gradient
    android:angle="270"
    android:endColor="#E8f2fe"
    android:startColor="#E8f2fe" />

<corners android:radius="3dp" />

<stroke
    android:
    android:color="#486e9d" />

【讨论】:

【参考方案6】:

如果您想要按钮的透明背景,请使用 Shivang Trivedi 的答案,但删除“渐变”部分,如下所示:

<?xml version="1.0" encoding="utf-8"?>   <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="3dp" />
    <stroke android: android:color="#ffffff" />  </shape>

【讨论】:

以上是关于Android 按钮上的边框颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何更改圆形按钮上的边框颜色(Swift)

Java,设置按钮的颜色而不是macOS上的边框?

如何缓和按钮元素上的边框颜色?

Android 通过solid来定义不同边框的颜色,可以只定义一个边框的颜色

118通过solid来定义不同边框的颜色,可以只定义一个边框的颜色

如何使整个表单(输入和提交按钮)在焦点上更改边框颜色(引导程序 3)