Frage

ein Problem mit CheckedTextView Having, dass ich nicht eine Lösung zu finden scheinen. Ich bin nicht einmal ganz sicher, was los ist.

Ich habe eine benutzerdefinierte Listview, deren Zeilen enthalten Textviews und 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();
        }
    });
}

Und in der Haupt-XML-Datei habe ich die Listview android:choiceMode="multipleChoice".

Also, was ich will, ist für die Listview-Zeilen lang und kurz anklickbar zu sein und für die CheckedTextView separate Klick Ausführung zu sein. Dies funktioniert mit Ausnahme des Textteils des CheckedTextView. Immer dann, wenn entweder die CheckedTextView gedrückt wird, wird der Text ‚flackert‘. Ich tat es langsam, genau herauszufinden, was los war. Wenn Sie auf die CheckTextView nach unten drücken, den weißen Text entweder verschwindet oder schwarz schaltet (möglicherweise umkehrt?) Und beim Loslassen, wird der Text erscheint wieder und die Häkchen schaltet. Es gibt keinen ‚Flimmern‘ Effekt, wenn das Listview gedrückt wird.

Alle Ideen, was hier vor sich geht?

Danke

War es hilfreich?

Lösung

Statt OnClickListener Sie verwenden sollten versuchen OnTouchListener mit

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

Andere Tipps

Listview verwendet ein eigenes Schema, wenn ein Element geklickt wird (Hervorhebung der Hintergrund). Sie können diese Lösung prüfen wollen, Android, wie man Ansicht markieren, wenn darauf geklickt?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top