我编写了使用ListActivity
. 列表中的每一项都由ImageView
和组成TextView
。长按列表条目会触发一些菜单和颜色效果,因为onCreateContextMenu
已被覆盖。有时TextView
包含我想要交互的 HTML 链接。我阅读了#1697908并激活了链接,因此启动了浏览器/youtube 播放器。一切都会很好,但长按时的颜色效果消失了(上下文菜单仍然出现)。
有人可以告诉我如何连接这两个功能并获得颜色效果吗?
我编写了使用ListActivity
. 列表中的每一项都由ImageView
和组成TextView
。长按列表条目会触发一些菜单和颜色效果,因为onCreateContextMenu
已被覆盖。有时TextView
包含我想要交互的 HTML 链接。我阅读了#1697908并激活了链接,因此启动了浏览器/youtube 播放器。一切都会很好,但长按时的颜色效果消失了(上下文菜单仍然出现)。
有人可以告诉我如何连接这两个功能并获得颜色效果吗?
您可以在自定义列表适配器中使用 Linkify。Linkify 允许您使用如下选择器设置颜色:
Linkify.addLinks(
holder.messageText,
messageDetailsMatcher,
"content://com.myApp/message/view?messageId=",
null, new myLinkTransformFilter(msgId));
ColorStateList colors = null;
try {
XmlResourceParser xpp = getResources().getXml(
R.color.link_color_selector);
colors = ColorStateList.createFromXml(getResources(),
xpp);
} catch (Exception e) {
Log.e("someError", e);
}
holder.messageText.setLinkTextColor(colors);
(注意:holder.messageText 是 holder 对象中的一个简单 TextView)
那么你有一个像这样的 /res/color/color_selector.xml :
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:color="@drawable/message_focused" />
<item android:state_pressed="true" android:state_enabled="false"
android:color="@drawable/message_pressed" />
<item android:state_enabled="false" android:color="@drawable/message_enabled" />
<item android:state_active="true" android:color="@drawable/message_active" />
<item android:color="@drawable/message_default" />
</selector>
我在开始时使用了 ImageView 和 Textview,但是您可以使用 WebView 避免此类问题并保持 html 交互性。
读这个
我已经设法解决了这个问题。也许不是直接以我想要的方式,但这对我来说已经足够了。我没有添加侦听器,而是TextView
将其添加到整行。突出显示按我预期的那样工作。这种行为对于我的应用程序是可以接受的,但它是某种解决方法,所以我仍然想知道它是否可以做得更好。