18

私のプロジェクト要件として、onClick でテーブル行を強調表示する必要があります。これを行う方法はありますか?または、代替案を教えてください。

4

6 に答える 6

27

一般的な ListView で得られるように、ストック オン クリック ハイライトを使用する場合は、各行の背景を次のように設定します。android:background="@android:drawable/list_selector_background"

次に例を示します。

<TableLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:stretchColumns="0">
  <TableRow
     android:id="@+id/first_row"
     android:background="@android:drawable/list_selector_background" >
    ... row content ...
  </TableRow>
</TableLayout>

次に、コードで、

TableRow firstRow = (TableRow) findViewById(R.id.first_row);
firstRow.setOnClickListener(new OnClickListener() {
       @Override
        public void onClick(View v) {
            // TODO: do your logic here

        }   
}

そして、ListView のようにハイライト可能な行を取得する必要があります...

編集: 上記は、デフォルトのテーマのリストの背景セレクターを提供します。より一般的なセレクター (ユーザーが行に触れたときのマテリアル デザイン セレクターなど) が必要な場合は、これを使用します。

android:background="?android:attr/selectableItemBackground"

また、これは TableRows 以外にも当てはまります。これは、onClickListener がアタッチされたほぼすべての汎用ウィジェット (TextViews、Buttons など) で実行できるはずです。

于 2011-11-20T21:14:09.250 に答える
11

私もサリルパンディットの答えの助けを借りて同じ問題に直面していましたが、それに少し変更を加えました。

これはTableRowxmlにあります:

<TableRow
        android:id="@+id/tableRow1"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:padding="5dip" 
        android:background="@drawable/selector">

これはフォルダselector.xmlにありますres\drawable

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item   android:state_focused="true"
            android:state_pressed="true"
            android:drawable="@android:drawable/list_selector_background"></item>
    <item   android:state_focused="true"
            android:state_pressed="false"
            android:drawable="@android:drawable/list_selector_background"></item>
    <item
            android:state_focused="false"
            android:state_pressed="true"
            android:drawable="@android:drawable/list_selector_background" />


     <item android:drawable="@android:drawable/list_selector_background"></item>

</selector>
于 2012-12-19T10:50:17.280 に答える
9

onclicklistener 内に以下を追加します。

 tr1.setBackgroundResource(drawable.list_selector_background);

tr1 は tablerow です。(テーブルローを機能させるには、テーブルローを最終にする必要があります)。

于 2012-04-18T17:28:59.790 に答える