То, что я сделал до сих пор, — это просмотр списка текстовых представлений с обычным текстом и кликабельными промежутками :
. Нажав на диапазон, я открываю URL-адрес, щелкнув элемент View вокруг textView, вы попадете в listView OnItemClickListener
, перейдя к деталям элемента, это нормально:
Теперь проблема:
прикосновение к textView приводит к тому, что обычный текст как бы выделяется (тем же цветом, что и при полном выборе элемента ), событие касания textView OnTouchListener
срабатывает, но не событие OnFocusChangeListener
, а представление элемента не получает стиль выбора. Пробовал все варианты FOCUS_BLOCK_DESCENDANTS
для listView, item View, textView focusable
был включен или отключен с тем же результатом.
К счастью, событие textView OnClickListener
срабатывает таким образом,но это настолько уродливо :, что текст невидим, пока прикосновение не отпускается, так как выбранный цвет текста совпадает с цветом элемента, нет никаких других указаний на то, что пользователь переходит к деталям элемента, кроме этого уродливого исчезновения текста.
Я подозреваю, что это происходит потому, что содержимое textView равно Spannable
, а части, не являющиеся CliclableSpan -, ведут себя странным образом.
Есть ли шанс, что я смогу выбрать элемент после прикосновения к обычному тексту?
Макет элемента listView:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:descendantFocusability="blocksDescendants"
android:orientation="horizontal" >
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:focusable="false" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:focusable="false"
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge"
android:textStyle="bold" />
<TextView
android:id="@+id/info"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:focusable="false"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/details"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:focusable="false"
android:gravity="fill_horizontal|right"
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium"/>
</LinearLayout>
</LinearLayout>
С текстовым представлением setClickable (false )я могу отключить этот странный стиль выделения таким образом, что ничего не происходит при касании области текстового представления, что не очень хорошо, но может быть полезно для решения.
Также попытался добавить не фокусируемую и не интерактивную кнопку к каждому элементу, когда она касается всего элемента, выбирается весь элемент, а когда касание отпускается, событие щелчка элемента передается, это именно то, что я ожидал от textView с содержимым Spannable.