Jako moje wymaganie dotyczące projektu muszę podświetlić wiersz tabeli w onClick. Czy jest jakiś sposób to zrobić? Lub zaproponuj mi alternatywę?Jak wyróżnić wiersz tabeli po kliknięciu?
Odpowiedz
Jeśli chcesz użyć akcji na click podświetleniem jak masz z ogólnej ListView, chcesz ustawić tło każdego rzędu, aby być android:background="@android:drawable/list_selector_background"
Oto przykład:
<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>
następnie w kodzie
TableRow firstRow = (TableRow) findViewById(R.id.first_row);
firstRow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO: do your logic here
}
}
i powinieneś dostać highlight-stanie wiersz tak jak w ListView ...
EDYCJA: Powyżej znajduje się domyślny selektor tła listy kompozycji. Jeśli chcesz selektor bardziej ogólny (jak selektora projektowania materialnego, gdy użytkownik dotyka wiersz) użyć tego:
android:background="?android:attr/selectableItemBackground"
Również dotyczy to więcej niż tylko TableRows. Powinieneś być w stanie to zrobić na prawie każdym ogólnym widżecie z załączonym onClickListener (TextViews, przyciski, itp.).
Oczywiście nie przetestowałeś tego. Wszystko to polega na ustawieniu koloru tła wiersza tabeli i dodaniu odbiornika kliknięć do wiersza, ** nic ** więcej. –
Przetestowałem go - i jego użycie jest z powodzeniem stosowane w produkcji. Masz rację, TO ustawia tło. To, do czego on służy, jest kluczem - "@android: drawable/list_selector_background" jest standardowym wyróżnieniem motywu telefonu po kliknięciu na wpis w ListView. Co ciekawe, przed odstąpieniem od komentarza zrobiłeś test? –
Testowałem to i to działa. Dokładnie tego szukałem: zachowanie przycisku dla TableRow. – Lekensteyn
W dodatku onclicklistener:
tr1.setBackgroundResource(drawable.list_selector_background);
Gdzie TR1 jest Twój TableRow. (będziesz musiał przygotować tablerow, aby działał).
dziękuję, ale po naciśnięciu rzędu, zostanie podświetlony, a następnie z powrotem ponownie, aby być podświetlone! –
Nawet byłem w obliczu tego samego problemu z pomocą Salil Pandit odpowiedź zanotował niewielką zmianę do niego i że działa na mnie
To TableRow
w 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">
To jest selector.xml
w res\drawable
folderu
<?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>
udało się śledzić, ale pamiętaj, że podczas tworzenia selektora w folderze do rysowania utwórz plik selector.xml jako zasób do pobrania. –
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
//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));
}
}
//...
}
};
jego działanie. układ tabeli wiersza onclick nasłuchiwania i umieść w nim ten kod. – bhruguni
Wielkie dzięki, to rozwiązało mój problem ..... uratowałeś mnie dzisiaj –
- 1. jqGrid - Odznacz wiersz po kliknięciu
- 2. Jquery: Zaznacz/usuń podświetlony wiersz tabeli po kliknięciu
- 3. angular-ui-grid: jak wyróżnić wiersz po najechaniu kursorem myszy?
- 4. Jak wyróżnić przycisk po naciśnięciu?
- 5. Wybierz wiersz UITableView po kliknięciu UISwitch
- 6. Jak dodać dodatkowy wiersz tabeli html po kliknięciu przycisku za pomocą jQuery?
- 7. Jak mogę podświetlić cały wiersz DataGrid po kliknięciu pojedynczej komórki?
- 8. Dołącz wiersz po pierwszym wierszu tabeli html
- 9. Zapobieganie zdarzeniu wstawiania wiersza tabeli po kliknięciu przycisku wewnątrz wiersza
- 10. Pobierz wiersz przycisku w widoku tabeli
- 11. wiersz tabeli klonu
- 12. jquery usunąć wiersz tabeli
- 13. wiersz tabeli tła
- 14. Jak usunąć wiersz tabeli w iPhone'ie
- 15. Jak przenieść wiersz tabeli w jQuery?
- 16. Jquery dodać wiersz tabeli po wierszu, który dzwoni jquery
- 17. Zmień właściwość display wiersz tabeli
- 18. Usuń powiadomienie po kliknięciu:
- 19. renderowanie częściowe po kliknięciu
- 20. Wiersz tabeli - Podawanie alternatywnych kolorów
- 21. Jak wstawić pusty wiersz do tabeli SQL?
- 22. Jak zwinąć wiersz tabeli w Bootstrap?
- 23. Jak odświeżyć pojedynczy wiersz w tabeli?
- 24. Jak dynamicznie dodawać wiersz do tabeli html
- 25. Laravel4 duplikat/kopiuj wiersz tabeli
- 26. Jak ustawić wiersz JTable w stan "niezaznaczony" po wybraniu dowolnego wiersza w tej tabeli?
- 27. uzyskać pojedynczy wiersz z tabeli
- 28. Usuwanie powiadomienia po kliknięciu
- 29. Jak wyróżnić części mapy obrazów po najechaniu kursorem myszy?
- 30. Wybierz wiersz tabeli w jQuery
Trochę za późno, ale sprawdź odpowiedź na ten wątek: http://stackoverflow.com/questions/6274343/how-to-change-the-background-color-of-a-tablerow-when-phocused – Arnaud
Możesz skierować na [ten link] (http://stackoverflow.com/questions/4410420/onclick-change-tablerow-background-color) odnoszą się do odpowiedzi udzielonej przez Josha Clemma. – prateek
zobacz edytowaną odpowiedź tutaj: http: //stackoverflow.com/a/7022137/2469134 –