Вопрос

Наличие проблемы с 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 при нажатии?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top