在Android视图上,我希望有一些可点击的文字与网页超链接类似。
它看起来就像普通文本(没有按钮边框),但触摸后,我想要更改文本颜色,我可能还希望它的背景变成反色。
使用具有透明背景的Button或TextView是否更好?我何时应该选择其中一个?
非常感谢
答案 0 :(得分:3)
您可以使用Button并将selector
作为背景和文字。
textselector.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="#0000ff"/> <!-- pressed -->
<item android:state_focused="true" android:color="@android:color/white"/> <!-- focused -->
<item android:color="@android:color/white"/> <!-- default -->
</selector>
buttonselector.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="@android:color/white"/> <!-- pressed -->
<item android:state_focused="true" android:color="#0000ff"/> <!-- focused -->
<item android:color="#0000ff"/> <!-- default -->
</selector>
在你的布局xml中
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/buttonselector"
android:text="some text"
android:textColor="@drawable/textselector" />
答案 1 :(得分:2)
hotveryspicy给出了一个很好的答案,真正指出了我正确的方向。谢谢,但我对回复有一些问题。
我想要的是一个按钮,其正常状态为黑色文本和灰色背景,红色背景为白色文本,处于选定状态。像这样:
使用hotveryspicy的建议我遇到了以下问题:
尝试将drawable分配给textColor时出错。有趣但我看到其他参考做这种事情。也许XML验证现在更严格了?
如果我没有在buttonselector.xml中定义android:drawable,我也会收到错误。看来你可以在选择器eiter中设置drawable的颜色,你需要实际创建一个drawable。
无论如何这就是我所做的:
我创建了一个Color State Resource,如下所示:
文件: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>
然后是以下3个drawables:
我的按钮背景处于正常状态,使用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>
我的按钮背景处于选中状态,也是Shape Drawable: 文件: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>
然后我创建了一个Drawable Selector,在两个形状之间进行选择。 文件: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>
然后在我的布局中,我的按钮看起来像这样:
<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"
/>
感谢大家的帮助!
答案 2 :(得分:1)
添加类似
的字符串 <string name="link">'<a href="http://www.google.com" rel="nofollow">Google</a>'</string>
在您的布局中
<TextView
android:id="@+id/link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="all"
android:linksClickable="true"
android:text="@string/link" />
答案 3 :(得分:1)
您可以使用linkify类链接文本。 请查看this和this with few examples
答案 4 :(得分:1)
出于Google的考虑:
不是让按钮看起来像链接,为什么不使TextView可点击?这实际上是我想要的并且为我的使用而工作。我希望文本可以点击以产生意图。
TextView.setOnClickListener(new View.OnClickListener()