2010-06-23 74 views
1

我寫了使用ListActivity的應用程序。列表中的每個項目由ImageViewTextView組成。長按列表條目會觸發某些菜單和顏色效果,因爲onCreateContextMenu已被覆蓋。有時TextView包含我希望互動的HTML鏈接。我閱讀#1697908並使鏈接處於活動狀態,因此啓動了瀏覽器/ YouTube播放器。一切都會很棒,但長按的顏色效果消失了(上下文菜單仍然出現)。Android:ListView內部的HTML鏈接 - 突出顯示的問題

有人可以告訴我如何連接這兩個功能,並取回顏色效果?

+0

可能重複的[ListView項目將不會顯示重點時觸摸](http://stackoverflow.com/questions/3078323/listview-items-wont-show-focus-when-touched) – Pentium10 2010-06-23 20:37:55

+0

我不認爲因爲你提出的問題是由可設置爲true的行可點擊屬性引起的。在這裏,一切工作,直到HTML鏈接處理被添加。 – boro 2010-06-23 20:57:40

回答

0

我設法解決這個問題。也許不是直接以我想要的方式,但對我來說就夠了。我將其添加到整行,而不是將偵聽器添加到TextView。突出顯示正在按照我的預期工作。這種行爲對於我的應用程序是可以接受的,但是是一種解決方法,所以我仍然想知道它是否可以做得更好。

1

您可以在自定義列表適配器中使用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中,保持架對象的簡單的TextView)

那麼你有A/RES /顏色/ 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>

+0

感謝您的回答。我試圖一直將Linkify添加到自定義列表適配器中。我不太確定它是否解決了我的問題。如何將顏色狀態應用於單個TextView可以返回整行(包含TextView的LinearLayout)上的顏色效果更改。 – boro 2010-06-24 06:03:05