在Android视图上,我希望有一些可点击的文本与网页超链接类似.
它看起来就像普通文本(没有按钮边框),但是当触摸时,我希望文本颜色改变,我可能也希望它的背景变成反色.
使用具有透明背景的Button或TextView是否更好?我什么时候应该选择其中一个?
非常感谢
hotveryspicy 给出了很好的答案,确实为我指明了正确的方向。谢谢您,但我对您的回复有一些疑问。
我想要的是一个在正常状态下具有黑色文本和灰色背景的按钮,在选定状态下具有红色背景和白色文本的按钮。像这样:

使用 hotveryspicy 的建议我遇到了以下问题:
尝试将可绘制对象分配给 textColor 时出现错误。很有趣,但我看到其他关于做这类事情的参考文献。也许 XML 验证现在更严格了?
如果我没有在buttonselector.xml 中定义android:drawable,我也会收到错误。看来您可以在选择器中设置可绘制对象的颜色,您需要实际创建可绘制对象。
无论如何,这就是我所做的:
我创建了一个颜色状态资源,如下所示:
文件:res/colors/link_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#ffffff"/>
<item android:color="#000000"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
然后是以下 3 个可绘制对象:
我的按钮背景处于正常状态,使用Shape Drawable:文件:res/drawable/link_button.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#cccccc"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
我的按钮背景处于选定状态,也是一个可绘制形状:文件:res/drawable/link_button_selected.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ff0000"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个可绘制选择器,可以在这两个形状之间进行选择。文件:res/drawable/link_button_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/link_button_selected"
android:state_pressed="true" />
<item
android:drawable="@drawable/link_button" />
</selector>
Run Code Online (Sandbox Code Playgroud)
然后在我的布局中我的按钮如下所示:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Button"
android:textColor="@color/link_button"
android:background="@drawable/link_button_selector"
/>
Run Code Online (Sandbox Code Playgroud)
感谢大家的帮助!
| 归档时间: |
|
| 查看次数: |
4621 次 |
| 最近记录: |