Выбор TextView с помощью Spannable и LinkMovementMethod

То, что я сделал до сих пор, — это просмотр списка текстовых представлений с обычным текстом и кликабельными промежутками : Item untouched

. Нажав на диапазон, я открываю URL-адрес, щелкнув элемент View вокруг textView, вы попадете в listView OnItemClickListener, перейдя к деталям элемента, это нормально: Item touched outside the textView

Теперь проблема:

Item textView normal text touched Item textView span touched прикосновение к 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.

11
задан A-Live 23 July 2012 в 05:15
поделиться