Я пишу приложение с ListView текста. В каждой строке есть комбинация текста и ссылок. Я добавил OnItemLongClickListener в список и сделал ссылки интерактивными сLongClick textView, clickable link
my_text.setMovementMethod(LinkMovementMethod.getInstance());
Проблема в том, если я могу нажать на ссылку, я не могу получить TextView зарегистрировать LongClick.
Я пробовал разные методы, чтобы сделать ссылки интерактивными, такие как
android:autoLink="web
Но это не делает ссылки кликабельны.
Мой вопрос: Есть ли другой способ, которым я должен установить LongClickListener, или другим способом сделать ссылки доступными?
Неужели кто-нибудь еще сталкивался с подобной проблемой?
Я хотел бы отметить, что прямо сейчас OnItemLongClickListener делает ссылку зарегистрировать LongClicks, но это вызывает проблему, когда TextView оленьей кожи есть ссылка или пользователь пытается longClick где-то в представлении (кроме ссылки)
Код: Я программно надуть RelativeLayout, содержащий представление списка и добавить его в вид ласт:
RelativeLayout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ListView
android:id="@+id/my_list"
style="@style/listViewSimple"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#f9f9f9"
android:cacheColorHint="#00000000"
android:divider="#ccc"
android:dividerHeight="1px"
android:fadingEdge="none"
android:fadingEdgeLength="30dp"
android:footerDividersEnabled="false"
android:headerDividersEnabled="false"
android:persistentDrawingCache="none" >
</ListView>
</RelativeLayout>
Добавление все программно:
RelativeLayout list = (RelativeLayout) LayoutInflater.from(MyActivity.this).inflate(R.layout.my_list_layout, null);
vf.addView(list);
ListView lv = (ListView) list.findViewById(R.id.my_list);
lv.setOnItemLongClickListener(listLongListener);
Создание ссылки кликабельны (в GetView() из ADAPTE):
my_tv.setText(Html.fromHtml(formatted_text)));
my_tv.setLinkTextColor(linkColor);
my_tv.setMovementMethod(LinkMovementMethod.getInstance());
Это делает ссылки кликабельны, но, кажется, потребляют все клики, прежде чем они попадут в TextView. Я попытался добавить longClickListener, который возвращает false, но это, похоже, не повлияло.
Мое временное исправление заключается в том, чтобы установить itemLongClickListener и onItemClickListener в listItem и просто отобразить диалог с интерактивным текстом в onListItemClick. Это работает, но добавляет дополнительный щелчок, чтобы пользователи могли взаимодействовать с текстом.
Можете ли вы рассказать мне, для чего нужен длинный клик? Я получаю, что щелчок по ссылке откроет его в веб-просмотре. У вас есть требование, чтобы при щелчке по элементу в списке он открыл другое действие с его деталями? – Shubhayu
Я использую длинный щелчок, чтобы открыть диалоговое окно параметров для пользователя, которое переносит их на разные действия, в зависимости от того, какой щелчок был нажат. – ByteMe
Можете ли вы добавить код, в котором у вас в настоящее время установлен OnItemLongClickListener(), и часть, в которой вы делаете ссылку кликабельной? Также укажите xml, содержащий ваш список, и тот, который содержит элемент списка ure. – Shubhayu