我想为无边框按钮添加边框。但是,如果我使用父 borderlessbutton 创建自己的样式并覆盖背景标签,我会丢失状态更改动画等,因为这也是由背景定义的。我也无法自己实现它们,因为 native android 可绘制对象不可公开使用,因此无法访问。我不想复制可绘制对象。
是否只能以编程方式覆盖 ondraw
还是我缺少基于 xml 的解决方案?
(顺便说一句,这是一个元素周期表,所以这不应该涉及为每个按钮创建一个 xml 文件,因为它们大约有 100 个)
谢谢
斯蒂芬
最佳答案
其中大部分来自 this article .
做这样的事情有 4 个步骤:
- 创建一个包含状态的 XML 文件。
- 为每个州创建一个 XML 文件(或背景)
- 创建按钮的样式
- 将按钮添加到您的布局,并查看它的外观。
最困难的事情是第一步,所以我会在这里展示。对于其他的,您可以访问该站点或执行您自己的操作。本质上,它看起来像这样。基本上需要捕获所有 4 个状态。这应该保存在 drawable 文件夹中,这个名称就是您的应用程序将用作 drawable 名称的名称。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="false"
android:drawable="@drawable/loc_for_button_disabled" />
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/loc_for_button_pressed" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/loc_for_button_focused" />
<item
android:state_enabled="true"
android:drawable="@drawable/loc_for_button_enabled" />
</selector>
关于android - 为 android 无边框按钮添加样式 (android 4.0+),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14010870/