OnClick cambiare tablerow colore di sfondo

Così sto cercando di trovare un modo facile per ottenere il colore di sfondo o una riga di tabella a cambiare quando la sua cliccato. Ho cercato di trovare un modo per chiamare quello che è il colore di sfondo e di controllo, ma non ho trovato un modo per richiamare il colore. Qui è quello che ho adesso.

    RowName = (TableRow) findViewById(R.id.RowName); 
    RowName.setBackgroundColor(Color.TRANSPARENT);

    RowName.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            if (RowName.equals(Color.TRANSPARENT))
            RowName.setBackgroundColor(Color.YELLOW);

            else if (RowName.equals(Color.YELLOW))
            RowName.setBackgroundColor(Color.TRANSPARENT);
        }
    });

So che il suo male. Speriamo che si possa vedere quello che sto cercando di realizzare. Se non, quello che voglio fare è di avere il tavolo fila di trasparente. Quando un utente fa clic sulla riga della tabella, la voglio cambiare di colore giallo. Quindi, se si fa clic di nuovo, voglio tornare a trasparente. Grazie.

Nel caso In cui qualcuno è alla ricerca di un colore di sfondo per un comportamento clic con il pulsante mi piace, vedere stackoverflow.com/q/4075356/427545

OriginaleL’autore Joshua Sutherland | 2010-12-10

2 Replies
  1. 8

    È necessario impostare il colore di sfondo della riga a una lista di stato disegnabile (che gestisce selezionare, premuto, attiva, non attiva).

    http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

    XML dovrebbe essere qualcosa di simile a questo:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!--  Active state -->
        <item android:state_selected="true" android:state_focused="false"
            android:state_pressed="false" android:drawable="@android:color/transparent" />
        <!--  Inactive state-->
        <item android:state_selected="false" android:state_focused="false"
            android:state_pressed="false" android:drawable="@android:color/transparent" />
        <!--  Pressed state-->
        <item android:state_pressed="true" android:drawable="@android:color/yellow" />
        <!--  Selected state (using d-pad) -->
        <item android:state_focused="true" android:state_selected="true"
            android:state_pressed="false" android:drawable="@android:color/yellow" />
    </selector>
    Ok. Cool. Così l’ho lavorando per la maggior parte. C’è un modo per farlo in modo che rimanga giallo finché non viene premuto di nuovo?
    Ok vedo di cosa si sta facendo ora. Bene, allora la lista di stato, probabilmente, non è quello che vuoi, ma piuttosto qualcosa di simile a quello che aveva originariamente. Sono molte righe hai? Perché se non si dispone di molti, è possibile mantenere una variabile intorno che salva lo stato della riga (invece di guardare lo sfondo corrente).
    Ho tra i 20 e i 25 righe.

    OriginaleL’autore Josh Clemm

  2. 2

    Così qui è che cosa ferita di lavoro. Assicurati di avere il vostro TableRows il nome. Prima di mia creazione ho

    privato TableRow RowName;

    Ho anche

    int stato = 0;

    . Ho quindi aggiungere il codice

    public void RowName(View view) {
      switch (state) {
      case 0:
          RowName.setBackgroundColor(Color.YELLOW);
          state = 1;
          break;
      case 1:
          RowName.setBackgroundColor(Color.TRANSPARENT);
          state = 0;
          break;
      }
    }

    Per farlo funzionare, vai nel tuo xml e la proprietà OnClick aggiungere RowName o il nome del public void che si sta lavorando.
    Godere di.

    OriginaleL’autore Joshua Sutherland

Lascia un commento