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 -> values -> 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】:使用<stroke>
元素。在 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 按钮上的边框颜色的主要内容,如果未能解决你的问题,请参考以下文章
Android 通过solid来定义不同边框的颜色,可以只定义一个边框的颜色