Как я могу выделить строку таблицы при нажатии?

В качестве моего требования к проекту я должен выделить строку таблицы onClick. Есть ли способ сделать это? Или, пожалуйста, предложите мне альтернативу?

Solutions Collecting From Web of "Как я могу выделить строку таблицы при нажатии?"

Если вы хотите использовать выделение на клике, как вы получаете с помощью общего списка 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 и т. Д.).

Даже я столкнулся с одной и той же проблемой с помощью ответа salil pandit, немного изменив ее, и это работает для меня

Это 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 – ваш табло. (Вам нужно будет сделать окончательный таблеток для его работы).

 String _row_selected = null; boolean _is_selection_even = false; private TableLayout TL; TableRow row_data = new TableRow(this); row_data.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (_row_selected != null) { if (Integer.parseInt(_row_selected) == TL.indexOfChild(v)) { if (_is_selection_even) { TL.getChildAt(Integer.parseInt(_row_selected)).setBackgroundColor(0xFF00FF00); _is_selection_even = false; } else { TL.getChildAt(Integer.parseInt(_row_selected)).setBackgroundColor(Color.WHITE); _is_selection_even = true; } } else { TL.getChildAt(Integer.parseInt(_row_selected)).setBackgroundColor(Color.WHITE); v.setBackgroundColor(0xFF00FF00); _row_selected = null; _row_selected = TL.indexOfChild(v) + ""; } } else { v.setBackgroundColor(0xFF00FF00); _row_selected = null; _row_selected = summaryTL.indexOfChild(v) + ""; } } }); 
 private OnClickListener tablerowOnClickListener = new OnClickListener() { public void onClick(View v) { Highlight selected row for (int i = 1; i < tblItemDetail.getChildCount(); i++) { View row = tblItemDetail.getChildAt(i); if (row == v) { row.setBackgroundColor(getResources().getColor(android.R.color.holo_red_light)); } else { //Change this to your normal background color. row.setBackgroundColor(getResources().getColor(android.R.color.transparent)); } } //... } };