Android 如何修复Html.fromHtml链接焦点可见性问题(在ICS和Honeycomb中)?

Android 如何修复Html.fromHtml链接焦点可见性问题(在ICS和Honeycomb中)?,android,textview,android-3.0-honeycomb,google-tv,android-4.0-ice-cream-sandwich,Android,Textview,Android 3.0 Honeycomb,Google Tv,Android 4.0 Ice Cream Sandwich,要获取TextView以显示(并友好地使用)Html字符串,我的代码如下所示: // itemHtml is a String of HTML defined above TextView itemContent = (TextView) findViewById(R.id.itemContent); itemContent.setText(Html.fromHtml(itemHtml)); itemContent.setMovementMethod(LinkMovementMethod.ge

要获取
TextView
以显示(并友好地使用)Html字符串,我的代码如下所示:

// itemHtml is a String of HTML defined above

TextView itemContent = (TextView) findViewById(R.id.itemContent);
itemContent.setText(Html.fromHtml(itemHtml));
itemContent.setMovementMethod(LinkMovementMethod.getInstance());
如果Html字符串具有链接,
TextView
将生成可单击且可聚焦的链接。当用户聚焦于特定链接时(例如,通过使用d-pad),链接文本会以某种显著的方式发生变化,以表明获得了焦点

问题是,当我使用带有d-pad的设备,使用蜂巢(例如谷歌电视)或Android的冰淇淋三明治口味,测试同样的模式时,文本中的链接没有明显的迹象表明链接有焦点

我知道它正在获得焦点,因为当你按下enter键时,它会执行指定的操作。你甚至可以在文本中的各种链接之间移动;你只是在猜测你目前处于哪个链接,这会导致非常糟糕的用户体验


我做错什么了吗?有什么方法可以解决这个问题吗?

HTML.fromHTML的操作方式是在字符串的各个字符中创建具有不同效果的“跨度”。一种解决方法是结合使用另一种字符样式将文本着色为可单击。上一个范围将允许您注册回调,此回调可能是为了广播查看url的意图(这将打开浏览器)。

蜂巢+的文本颜色状态列表可能不会将聚焦状态设置为其他颜色,或者您将颜色覆盖为常量

检查您的_android_sdk_目录/android-14/data/res中的颜色+样式/


将文本设置为android:autoLink=“web”也可能有帮助?

最好的方法是将CSS样式添加到html中。我知道Android支持选择器。因此,您可能会这样做:

String myLink = "<a href=\"http:\/\/google.com\">your link</a>"
Html.fromHtml(myLink);
更新:


我想你的问题的答案是。

编辑:在有点疯狂之后,我终于找到了解决办法。但是,此解决方案仅适用于蜂窝。ICS仍然没有解决

从API 11开始,Android在TextView上有一个新设置,用于定义文本是否可选择

您可以在文本视图上使用
setTextIsSelectable(true)
设置它,或者在XML布局
android:textselectable=“true”


最好用XML定义它,这样保持应用程序向后兼容就很简单了。请确保您的目标版本>=11,否则可能会出错。

我想您误解了。正如我提到的,操作(即打开URL)被调用。问题是没有选择链接的视觉表示。
a :hover {
   color: red;
}