Android ListView CheckedTextView Blinking
-
08-10-2019 - |
Вопрос
Наличие проблемы с CheckedTextView, что я не могу найти решение. Я даже не совсем уверен, что происходит.
У меня есть пользовательский список, строки которого содержат TextViews и 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();
}
});
}
И в основном XML-файле я устанавливаю ListView для android:choiceMode="multipleChoice"
.
Итак, что я хочу, для рядов ListView будет длинным и коротким кликами, и для CheckedTextView, чтобы быть отдельным выполнением. Это работает за исключением текстовой части CheckedTextView. Всякий раз, когда нажата либо CheckedTextView, текст «Flickers». Я медленно сделал это, чтобы точно понять, что происходит. Когда вы нажимаете на CheckTextView, белый текст исчезает или переключает черный (возможно инверты?) И при выпуске текст вновь появляется и галочка переключается. Не существует эффекта «мерцания», когда ListView нажата.
Любые идеи на то, что здесь происходит?
Спасибо
Решение
Вместо того, чтобы использовать OnClickListener, вы должны попробовать использовать OnTouchListener
ckToggle.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
CheckedTextView ck = ((CheckedTextView) v);
ck.toggle();
return false;
}
});
Другие советы
ListView использует свою собственную схему при щелчке элемента (выделение фона). Возможно, вы захотите проверить это решение Android Как сделать представление Highlight при нажатии?