Question

Avoir un problème avec CheckedTextView que je ne peux pas sembler trouver une solution. Je ne suis même pas tout à fait sûr ce qui se passe.

J'ai un ListView personnalisé dont les lignes contiennent TextViews et un CheckedTextView.

row.xml

<CheckedTextView 
    android:layout_height="wrap_content"
    android:layout_width="fill_parent" 
    android:id="@+id/title"
    android:text="Name" 
    android:gravity="center_vertical"
    android:paddingRight="6dip"
    android:typeface="sans" 
    android:checkMark="?android:attr/textCheckMark"
    android:textSize="16sp" 
    android:textStyle="bold"/>

MyAdapterView.java

public class RuleAdapterView extends LinearLayout
{   
    private CheckedTextView title;

    ...

    title = (CheckedTextView)v.findViewById(R.id.title);
    title.setText(entry.getName());
    title.setChecked(entry.isActive());

    // setup a listener for the checkbox
    title.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v)
        {
            ((CheckedTextView) v).toggle();
        }
    });
}

Et dans le principal fichier XML que je mis ListView à android:choiceMode="multipleChoice".

Alors, ce que je veux est pour les lignes de ListView à long et à court cliquable et pour le CheckedTextView d'être l'exécution de clic séparé. Cela fonctionne à l'exception de la partie de texte de la CheckedTextView. Chaque fois que l'on appuie sur la CheckedTextView, le texte « scintille ». Je l'ai fait lentement à comprendre exactement ce qui se passait. Lorsque vous appuyez sur le CheckTextView, le texte blanc disparaît ou noir (peut-être bascule invertis?) Et quand vous relâchez, reparaît texte et les Verrous en coche. Il n'y a pas d'effet de « scintillement » lorsque l'on appuie sur ListView.

Toutes les idées sur ce qui se passe ici?

Merci

Était-ce utile?

La solution

Au lieu d'utiliser OnClickListener vous devriez essayer d'utiliser OnTouchListener

ckToggle.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                CheckedTextView ck = ((CheckedTextView) v);
                ck.toggle();
                return false;
            }
        });

Autres conseils

ListView utilise son propre système lorsqu'un élément est cliqué (mettant en lumière l'arrière-plan). Vous pouvez consulter cette solution Android comment faire Voir les meilleurs moments lorsque vous cliquez dessus

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top