Als Projektanforderung muss ich die Tabellenzeile auf onClick markieren. Gibt es einen Weg, dies zu tun? Oder bitte schlage mir die Alternative vor?Wie kann ich die Tabellenzeile beim Klicken markieren?
Antwort
Wenn Sie das Lager auf Klick Highlight verwenden möchten, wie Sie mit einem allgemeinen Listview bekommen, wollen Sie den Hintergrund jeder Zeile setzen android:background="@android:drawable/list_selector_background"
Hier zu sein ist ein Beispiel:
<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>
dann im Code,
TableRow firstRow = (TableRow) findViewById(R.id.first_row);
firstRow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO: do your logic here
}
}
Und Sie sollten eine Highlight-able Reihe wie in einem Listview ...
erhaltenEDIT: Oben wird Ihnen die Liste Hintergrund-Auswahl des Standardthemas geben. Wenn Sie den allgemeineren Selektor (wie das Materialdesign Selektor, wenn der Benutzer eine Zeile berührt) wollen Sie mit diesem:
android:background="?android:attr/selectableItemBackground"
Auch gilt dies für mehr als nur TableRows. Sie sollten dies in fast jedem generischen Widget mit einem angehängten onClickListener (TextViews, Buttons, etc.) tun können.
Sie haben dies offensichtlich nicht getestet. All dies setzt die Hintergrundfarbe der Tabellenzeile und fügt der Zeile einen Klick-Listener hinzu, ** nichts ** mehr. –
Ich habe es getestet - und es wird in der Produktion ziemlich erfolgreich eingesetzt. Du hast recht, es setzt den Hintergrund. Was es festlegt, ist der Schlüssel - der '@android: drawable/list_selector_background' ist das Standard-Highlight des Telefons, wenn Sie auf einen Eintrag in einem ListView klicken. Neugierig, bevor Sie einen Kommentar fallen lassen, haben Sie es getestet? –
Ich habe es getestet und es funktioniert. Genau das habe ich gesucht: Tastenverhalten für eine TableRow. – Lekensteyn
Im OnClickListener add:
tr1.setBackgroundResource(drawable.list_selector_background);
Wo tr1 Ihre TableRow ist. (Sie müssen das letzte Finale machen, damit es funktioniert).
danke, aber wenn ich die Zeile drücke, wird sie markiert und dann wieder zurück, um nicht hervorgehoben zu werden! –
Auch wurde ich das gleiche Problem mit Hilfe von salil pandit Antwort mit Blick auf eine kleine Änderung, um es und das funktioniert für mich
Dies ist TableRow
in 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">
Dies ist selector.xml
in res\drawable
Ordner
<?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>
konnte folgen, aber denken Sie daran, dass während der Erstellung eines Selektors unter einem drawbaren Ordner die Datei selector.xml als eine auszeichnungsfähige Ressource erstellt wird. –
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));
}
}
//...
}
};
es funktioniert. Tabellenlayout der Zeile onclick Listener und diesen Code einfügen. – bhruguni
Vielen Dank, es hat mein Problem gelöst ..... du hast mich heute gerettet –
- 1. Jquery: Markieren/Entfernen der Tabellenzeile beim Klicken
- 2. Wie die letzte Tabellenzeile in Datentabellen markieren
- 3. wie auf klicken Sie auf die Tabellenzeile
- 4. Tabellenzeile Datensatz klicken Abrufen
- 5. Wie kann ich zeigen, Daten mit einem modalen beim Klicken auf eine Tabellenzeile (mit Bootstrap)
- 6. Wie kann ich ListView beim Klicken ausblenden?
- 7. Markieren Sie eine einzelne dynamische Tabellenzeile Hintergrundfarbe
- 8. wie die JavaScript-Funktion auf Tabellenzeile aufrufen klicken
- 9. Wie die Tabellenzeile auf Maus schweben
- 10. Wie wechsele ich die Spieler beim Klicken auf die Schaltfläche?
- 11. Wie strecke ich die Tabellenzeile in Android?
- 12. Wie lösche ich nur die letzte Tabellenzeile?
- 13. Wie kann ich ein UITableViewCell markieren
- 14. Ich kann die Tabellenzeile nicht ändern, wenn ich schwebe
- 15. Wie kann ich die Position von -webkit-transform-origin markieren?
- 16. Wie kann man beim Klicken auf Abbrechen die Suche beenden?
- 17. Wie kann Page_Load() beim Klicken auf die Schaltfläche vermieden werden?
- 18. Wie man die Knopfnamen beim Klicken ändert
- 19. ASP.NET MVC Datenvalidierung - Markieren Sie Tabellenzeile und TextBoxen
- 20. wie die Tabellenzeile auf NG-Klick verstecken
- 21. DataGridView: Programmgesteuertes Auswählen/Markieren der gesamten Spalte beim Klicken auf die Schaltfläche
- 22. Ich kann nicht auf die Arbeit klicken
- 23. Wie markieren Sie eine Spalte in der HTML-Tabelle beim Klicken mit js oder jquery?
- 24. Wie kann ich eine Tabellenzeile in iOS identifizieren?
- 25. jquery wie kann ich Daten aus html Tabellenzeile
- 26. Wie kann ich eine HTML-Tabellenzeile an DataTable.net weitergeben fnAddData
- 27. Wie kann ich eine Tabellenzeile mit jQuery ein- und ausblenden?
- 28. Wie kann ich eine Schaltfläche in meinem Verarbeitungsprogramm erstellen, die beim Klicken mehr Bilder anzeigt?
- 29. Wie rufe ich Ajax, während die Tabellenzeile angehängt?
- 30. Klicken Sie doppelt markieren variable Sublime Text 3 umfassen $
Ein bisschen spät, aber überprüfen Sie die Antwort dieses Threads: http://StackOverflow.com/Questions/6274343/How-to-change-the-background-color-of-a-Tablerow-when-fokussiert – Arnaud
Sie können sich beziehen zu [diesem Link] (http://stackoverflow.com/questions/4410420/onclick-change-tablerow-background-color) siehe die Antwort von Josh Clemm. – prateek
finden Sie die bearbeitete Antwort hier: http: //stackoverflow.com/a/7022137/2469134 –