Флажок для Android

Я пытаюсь установить флажок с конфигурацией макета ниже.

<android.support.v7.widget.AppCompatCheckBox
            android:id = "@+id/gdprOptIn"
            fontPath = "fonts/AvenirNextRegular.ttf"
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:layout_gravity = "center"
            android:layout_marginBottom = "@dimen/medium_margin"
            android:layout_marginTop = "@dimen/medium_margin"
            android:button = "@drawable/checkbox"
            android:checked = "false"
            android:paddingLeft = "@dimen/default_margin"
            android:text = "@string/opt_in_gdpr"
            android:textColor = "@color/paper_ink_light"
            android:visibility = "gone"
            android:gravity = "top"/>

Я не могу найти способ: - Избегайте кликабельности текста. Я могу установить / снять флажок, нажав на текст - Добавьте круглый / квадратный контур вокруг флажка, чтобы сделать его более заметным для использования.

Любая идея ?

0
0
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы не хотите, чтобы текст был интерактивным, вы можете заменить один тег <CheckBox> на <LinearLayout>, содержащий <CheckBox> и <TextView>. Например, это:

<CheckBox
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:text = "hello world"/>

можно заменить на это:

<LinearLayout
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:orientation = "horizontal">

    <CheckBox
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"/>

    <TextView
        android:layout_width = "0dp"
        android:layout_height = "wrap_content"
        android:layout_weight = "1"
        android:text = "hello world"/>

</LinearLayout>

Если вы хотите обвести флажок вокруг флажка, чтобы он выделялся еще больше, вы можете обернуть его в <FrameLayout> с цветным фоном:

<LinearLayout
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:gravity = "center_vertical"
    android:orientation = "horizontal">

    <FrameLayout
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:background = "#fac">

        <CheckBox
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"/>

    </FrameLayout>

    <TextView
        android:layout_width = "0dp"
        android:layout_height = "wrap_content"
        android:layout_weight = "1"
        android:text = "hello world"/>

</LinearLayout>

Спасибо, единственное, что мой текст - это текст в текстовом представлении, содержащий интерактивный элемент, давайте, мир интерактивен. Я использовал SpannableStringBuilder, чтобы сделать это, но кажется, что он стал неактивным или событие щелчка перехватывается LinearLayout. Я установил LL для кликабельности: false, но все еще не работает

Seb 03.10.2018 22:14

Другие вопросы по теме