android 自带的大部分物品都只是一组预先打包好的属性。
几乎不可能期望 Android API 开发人员为每种可能的颜色/边框组合包含一组预打包的属性,但总有一个解决方案!
不幸的是,正如您所提到的,解决方案确实存在于创建您自己的自定义 XML 文件中,在您掌握它之前,这通常会令人生畏。一旦你这样做了,你也会惊叹于它所允许的灵活性。
具体针对您的情况,有两种选择...
1) 创建自定义 XML 边框可绘制对象。
2)在您的按钮背景属性下设置您的新自定义边框可绘制
3)然后还通过添加在按钮 xml 属性下设置波纹效果:
android:foreground="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
----或----
一种更复杂的方法是制作如下图所示的可绘制对象。这将添加“波纹”按钮效果以及自定义阴影、按钮颜色和边框颜色!
“对于以后阅读本文但可能经验不足的任何人)
1)在您的项目视图中转到 res/drawable
2)右键单击文件夹本身并选择新建/可绘制资源文件
3)输入文件名 my_ripple_button.xml(根目录并不重要,因为您将用下面的代码替换它)
4)如果您还没有,请单击文本选项卡
5)全选文字,基本替换成以下内容:(创建自定义颜色边框的步骤基本相同)
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/colorPrimaryDark">
<item android:id="@android:id/ripple">
<shape android:shape="rectangle">
<solid android:color="@color/colorPrimaryDark" />
<corners android:radius="@dimen/button_radius_large" />
</shape>
</item>
<item android:id="@android:id/background">
<shape android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="@color/colorPrimaryLight"
android:startColor="@color/colorPrimary"
android:type="linear" />
<corners android:radius="@dimen/button_radius_large" />
</shape>
</item>
</ripple>