3

カスタム アダプターを備えた ListView があります。その中のすべてのアイテムには TextView が含まれています。

<TextView
    android:id="@+id/chat_name"
    android:layout_height="48dp"
    android:layout_width="match_parent"
    android:textColor="#FFFFFF"
    android:gravity="center_vertical"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:singleLine="true"
    android:focusable="false"
    android:focusableInTouchMode="false"/>

onListItemClick()メソッドに依存しているため、この TextView をフォーカスできないようにする必要があります。私が学んだように、onListItemClick()設定すると発火しませんfocusable="true"

私が設定したアダプタで:

TextView chatName = (TextView) v.findViewById(R.id.chat_name);
chatName.setText(chat.getChatName());
chatName.setSelected(true);

そして、それは最初のものを除いて毎回機能します。アイテムがアダプターに追加されると、リストビューに表示されますが、マーキーされません。アイテムをクリックすると、別のアクティビティが表示されます。ユーザーが ListView に戻った後、項目が突然マーキーされます。ずっと飾っておきたい。

常に true を返すように上書きするメソッドで TextView をサブクラス化しようとしましたisFocused()が、それは役に立ちませんでした。動作は同じままでした。focusableまた、と属性のさまざまな値を試しましfocusableInTouchModeたが、成功しませんでした。

4

2 に答える 2

6

次のように requestFocus() 関数を使用してください。

chatName.setSelected(true);
chatName.requestFocus();

私は働きます。

于 2012-12-13T07:10:32.607 に答える