私のプロジェクト要件として、onClick でテーブル行を強調表示する必要があります。これを行う方法はありますか?または、代替案を教えてください。
6 に答える
一般的な 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 など) で実行できるはずです。
私もサリルパンディットの答えの助けを借りて同じ問題に直面していましたが、それに少し変更を加えました。
これはTableRow
xmlにあります:
<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>
onclicklistener 内に以下を追加します。
tr1.setBackgroundResource(drawable.list_selector_background);
tr1 は tablerow です。(テーブルローを機能させるには、テーブルローを最終にする必要があります)。