2010-12-10 7 views
3

Donc j'essaie de trouver un moyen facile d'obtenir la couleur d'arrière-plan ou une ligne de table pour changer quand il est cliqué sur. J'ai essayé de trouver un moyen d'appeler ce que la couleur d'arrière-plan est et de vérifier, mais je n'ai pas trouvé un moyen d'appeler la couleur. Voici ce que j'ai en ce moment.OnClick changer la couleur d'arrière-plan tablerow

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); 
     } 
    }); 

Je sais que c'est faux. J'espère que vous pouvez voir ce que j'essaie d'accomplir. Sinon, ce que je veux faire est d'avoir le début de la ligne de la table de transparent. Quand quelqu'un clique sur la ligne de la table, je veux qu'il devienne jaune. Ensuite, s'ils le cliquent à nouveau, je veux que le rendu redevienne transparent. Merci.

+0

Si quelqu'un recherche un comportement de couleur d'arrière-plan sur le bouton de type clic, voir http://stackoverflow.com/q/4075356/427545 – Lekensteyn

Répondre

2

Voici donc ce travail liquidée. Assurez-vous d'avoir vos TableRows nommés. Avant mon sur créer j'ai

private TableRow RowName;

J'ai aussi

état int = 0;

. Je puis ajouter le code

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; 
    } 
} 

Pour le faire fonctionner, allez dans votre xml et dans la propriété OnClick ajouter RowName ou le nom du vide public que vous travaillez. Profitez-en.

8

Vous devez définir la couleur d'arrière-plan de votre ligne sur une liste d'états pouvant être dessinée (qui prend en charge select, pressé, actif, non actif).

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

Le XML devrait ressembler à ceci:

<?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> 
+0

Ok. Cool. Je l'ai donc fonctionné pour la plupart. Y a-t-il un moyen de l'obtenir pour qu'il reste jaune jusqu'à ce qu'il soit à nouveau pressé? –

+0

Ok, je vois ce que vous faites maintenant. Eh bien, la liste d'état n'est probablement pas ce que vous voulez, mais plutôt quelque chose de similaire à ce que vous aviez à l'origine. Avez-vous beaucoup de lignes? Car si vous n'en avez pas autant, vous pouvez conserver une variable qui sauvegarde l'état de la ligne (au lieu de regarder l'arrière-plan en cours). –

+0

J'ai entre 20 et 25 lignes. –