Android Listview CheckedTextView Blinzeln
-
08-10-2019 - |
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
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?