Android: HTML-ссылки внутри ListView - проблема с подсветкой - PullRequest
1 голос
/ 24 июня 2010

Я написал приложение, которое использует ListActivity. Каждый элемент списка состоит из ImageView и TextView. Длительное нажатие на запись в списке вызывает некоторое меню и цветовой эффект, потому что onCreateContextMenu был переопределен. Иногда TextView содержит ссылки HTML, которые я хотел бы использовать в интерактивном режиме. Я прочитал # 1697908 и сделал ссылки активными, поэтому браузер / проигрыватель YouTube запущен. Все было бы здорово, но цветовой эффект при длинном щелчке исчез (контекстное меню по-прежнему появляется).

Может кто-нибудь сказать мне, как соединить эти две функции и вернуть цветовой эффект?

Ответы [ 3 ]

1 голос
/ 24 июня 2010

Вы можете использовать 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 в объекте holder)

тогда у вас /res/color/color_selector.xml вот так: </p> <p><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 голосов
/ 28 июня 2010

Мне удалось решить эту проблему. Может быть, не так, как я хотел, но мне этого достаточно. Вместо добавления слушателя к TextView я добавляю его ко всей строке. Подсветка работает, как я и ожидал. Такое поведение приемлемо для моего приложения, но это своего рода обходной путь, поэтому я все еще хотел бы знать, можно ли сделать это лучше.

0 голосов
/ 24 июня 2010

Я использовал ImageView и Textview в начале, но вы можете избежать такого рода проблем с помощью WebView и сохранить интерактивность HTML.

прочитать это

Как можноУ меня есть плавающее изображение (выровненное по правому краю) с текстом, который оборачивается вокруг изображения в макете Android?

...