Подтвердить что ты не робот

Измените сторону, которую текст появится на переключателе

Мне было интересно, есть ли способ переключить ту сторону, которую текст появляется на радиокнопке в андроиде?

4b9b3361

Ответ 1

Я хотел сделать то же самое, без необходимости продлить еще один класс (или два, так как вам придется хотя бы расширить CompoundButton и RadioButton) для чего-то, что должно быть частью реализации с самого начала. Поскольку я использовал RadioGroup, который не будет работать, если вы скажете, RadioButton и TextView в контейнере компоновки. Мое решение, по общему признанию, более чем хакерское, но - оно работает.

1) Устанавливает прокладку влево до 40 2) Установите размер макета слева на -36dp

В этот момент исходная радиокнопка будет находиться за пределами представления, и ваше текстовое представление будет сидеть слева влево с краем 4dp.

3) Установите Drawable справа на @android: drawable/btn_radio

Теперь у вас будет родной RadioButton с текстом слева и кнопкой справа, который будет работать с RadioGroup.

@CommonsWare

Стоит отметить, что невероятно иронично поднимать Руководства по интерфейсу человека в ответ на этот конкретный вопрос. Особенно учитывая, что настройка макета RadioButton для размещения кнопки в крайнем правом углу, обеспечит согласованность с макетом меню Spinner. Я полностью согласен с вашим мнением по этому вопросу - но вполне возможно, что NickTFried пытался компенсировать Android "зависанием" в этом отношении.

Ответ 2

Как указывает Рави Вьяс, вы можете сделать это самостоятельно с помощью TextView и RadioButton. Для RadioButton нет ничего, чтобы переместить кнопку относительно текста, из моего чтения исходного кода.

Кроме того, помните, что только потому, что это возможно, это не значит, что это хорошая идея. Например, на iPhone вам не разрешено отправлять ваше приложение, если вы слишком много обходите это, потому что у них есть руководящие принципы для человеческого интерфейса, которым должны придерживаться приложения. Android дает вам гораздо больше веревки - не вешайте своих пользователей с ней.

Ответ 3

CheckedTextView отлично работает, если вы работаете с одним "переключателем".

Но мне нужно было сохранить функциональность переключения между переключателями в группе, так что это помогло мне лучше:

        <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <RadioButton
            android:id="@+id/radioButton1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:button="@null"
            android:drawableRight="@android:drawable/btn_radio"
            android:gravity="left|center_vertical"
            android:layout_marginLeft="-32dp"
            android:text="Radio Button 1" />

        <RadioButton
            android:id="@+id/radioButton2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:button="@null"
            android:drawableRight="@android:drawable/btn_radio"
            android:gravity="left|center_vertical"
            android:layout_marginLeft="-32dp"
            android:text="Radio Button2" />

    </RadioGroup>

При необходимости отрегулируйте android:layout_marginLeft.

Ответ 4

Для языков RTL i.e Arabic используйте это:

        <RadioGroup
            android:id="@+id/rgNewsFilter"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <RadioButton
                android:id="@+id/rbAllNews"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="-32dp"
                android:button="@null"
                android:drawableRight="@android:drawable/btn_radio"
                android:gravity="right|center_vertical"
                android:text="ذنيسبمنشخصث"
                android:textColor="#ffffff" />

            <RadioButton
                android:id="@+id/rbMyTeam"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="-32dp"
                android:button="@null"
                android:drawableRight="@android:drawable/btn_radio"
                android:gravity="right|center_vertical"
                android:text="تشسيبتسيتبتسيب"
                android:textColor="#ffffff" />
        </RadioGroup>

Ответ 6

Android имеет встроенный макет, который вы можете использовать - android.R.layout.simple_list_item_single_choice:

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<CheckedTextView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeightSmall"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/listChoiceIndicatorSingle"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" />

Если вы хотите его изменить, вы можете скопировать вложенное выше в новый XML файл, а затем использовать тег <include>, чтобы включить его в другие макеты (под Apache 2.0 License). Вы также можете использовать его как элемент списка и оставить его неизменным.