Возможно и несколько просто реализовать то, что вы ищете. Да, CheckedTextView
используется главным образом для того, чтобы иметь один Checkable
вид в строке 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."
/>