Изменить сторону, на которой текст отображается на переключателе - PullRequest
21 голосов
/ 13 апреля 2010

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

Ответы [ 6 ]

16 голосов
/ 12 сентября 2011

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

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

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

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

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

@ CommonsWare

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

9 голосов
/ 14 апреля 2010

Как указывает Рави Вьяс, вы можете сделать это самостоятельно с TextView и RadioButton.* * * * * * * * * * * * * * * *

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

8 голосов
/ 18 января 2013

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

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

        <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 при необходимости.

6 голосов
/ 24 февраля 2013

Для языков RTL, т.е. 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>
2 голосов
/ 17 октября 2011

Это можно сделать с помощью CheckedTextView;см. параметр RadioButton для Android в правой части текста

0 голосов
/ 24 июля 2015

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 ). Вы также можете использовать его как элемент списка и оставить его без изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...