私がこれまでに行ったことは、通常のテキストとクリック可能なスパンを持つテキストビューのリストビューです。
URLを開いているスパンをクリックし、textViewの周りのアイテムViewをクリックすると、listViewOnItemClickListener
がアイテムの詳細に移動します。
これで問題ありません。
今問題は次のとおりです。
textViewに触れると、通常のテキストが少し強調表示され(アイテムが完全に選択されたときと同じ色で)、textViewのOnTouchListener
touchイベントは発生しますが、イベントは発生OnFocusChangeListener
せず、アイテムのViewは選択スタイルを取得しません。FOCUS_BLOCK_DESCENDANTS
listView、item Viewのすべてのバリエーションを試しましたが、textViewfocusable
が有効または無効になり、同じ結果になりました。
幸い、textViewOnClickListener
イベントはこのように発生しますが、それは非常に醜いです。選択したテキストの色がアイテムの色と同じであるため、タッチが解放されていない間はテキストが表示されません。ユーザーがアイテムの詳細に移動していることを示す他の兆候はありません。その醜いテキストが消えるより。
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)を使用すると、テキストビュー領域に触れても何も起こらないように、この奇妙な選択スタイルを無効にすることができます。これは良くありませんが、解決に役立つ可能性があります。
また、各アイテムにフォーカス不可およびクリック不可のボタンを追加しようとしました。タッチするとアイテム全体が選択され、タッチを離すとアイテムのクリックイベントが渡されます。これは、Spannableコンテンツを含むtextViewに期待したとおりです。