андроид: CheckedTextView не может быть проверен?

Первоначально я хотел галочку, куда текст помещается слева от галочки. После поиска на этом сайте я узнал, что лучшее обходное решение является android:CheckedTextView? Однако я узнал, что галочка не может быть изменена вручную пользователями. Это дизайном?

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
 android:id="@+id/autoupdatecheckboxview" 
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content" 
 android:gravity="center_vertical" 
 android:checkMark="?android:attr/listChoiceIndicatorMultiple" 
 android:paddingLeft="6dip" 
 android:paddingRight="6dip" 
 android:text="Pop up a message when new data available" 
 android:typeface="sans" android:textSize="16dip"/> 
47
задан Yang 13 April 2010 в 05:41
поделиться

2 ответа

Вы, вероятно, захотите просто использовать обычный CheckBox (который наследуется от Button и, следовательно, TextView ). CheckedTextView предназначен для работы со списками. Пример XML макета CheckBox приведен ниже:

<CheckBox
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Pop up a message when new data available"
    android:textSize="16dip" />
38
ответ дан 26 November 2019 в 19:11
поделиться

Возможно и довольно просто реализовать то, что вы ищете. Да, используется CheckedTextView в первую очередь для того, чтобы иметь сингл Проверяемое представление в строке ListView , которое контролирует проверяемые состояния своих дочерних элементов с помощью choiceMode .Однако, поскольку CheckBox, похоже, не поддерживает флажок с выравниванием по правому краю, а CheckedTextView является флажком с выравниванием по правому краю, имеет смысл захотеть использовать то, что там есть.

Поскольку ListView управляет отмеченным состоянием элемента списка, сам CheckedTextView не реагирует на события щелчка и по умолчанию не доступен для щелчка или фокусировки. Однако он реагирует на нажатие и сфокусированные состояния - это означает, что он может получать события фокусировки и щелчка и выглядит правильно, насколько должен выглядеть флажок. Единственное, чего не хватает, это то, что он не переключает свое отмеченное состояние при нажатии. Поэтому быстрый OnClickListener, который вызывает .toggle () , даст вам конечный результат, который вы ищете.

Таким образом, вам нужны 3 вещи: интерактивность, фокусировка и onClickListener:

    CheckedTextView chkBox = (CheckedTextView) findViewById(R.id.CheckedTextView01);
    chkBox.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v)
        {
            ((CheckedTextView) v).toggle();
        }
    });

и файл макета:

<CheckedTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/CheckedTextView01"
    android:checked="true"
    android:clickable="true"
    android:focusable="true"
    android:text="Label on Left Side of Checkbox."
    />
122
ответ дан 26 November 2019 в 19:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: