Как показать флажок Android на правой стороне? - PullRequest
122 голосов
/ 01 июля 2010

По умолчанию установлен флажок Android текст справа и флажок слева
Я хочу показать флажок справа с текстом слева

как мне этого добиться?

Ответы [ 13 ]

331 голосов
/ 24 февраля 2014

Я думаю, что уже слишком поздно, чтобы ответить на этот вопрос, но на самом деле есть способ достичь вашей цели. Вам просто нужно добавить следующую строку к вашему флажку:

android:button="@null"
android:drawableRight="?android:attr/listChoiceIndicatorMultiple"

Вы также можете использовать свой индивидуальный чертеж для *. 1004 *

А для радиокнопки:

android:button="@null"
android:drawableRight="@android:drawable/btn_radio"

А если вы хотите сделать это программно:

Определите макет и назовите его RightCheckBox и скопируйте следующие строки:

<?xml version="1.0" encoding="utf-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
    android:text="hello"
    android:layout_width="match_parent" 
    android:layout_height="match_parent"
    android:button="@null"
    android:drawableRight="?android:attr/listChoiceIndicatorMultiple"/>

и когда вам нужно добавить его программно, вам просто нужно накачать его в CheckBox и добавить его в корневой режим.

CheckBox cb = (CheckBox)((LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.check_right_checkbox,null);
rootView.addView(cb);
89 голосов
/ 12 июня 2017

Вы можете сделать

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right|center"//or "center_vertical" for center text
android:layoutDirection="rtl"
android:text="hello" />

Достаточно следующей строки

android:layoutDirection="rtl"
50 голосов
/ 27 мая 2016

Вы можете добавить android:layoutDirection="rtl", но это доступно только с API 17.

40 голосов
/ 01 июля 2010

Я не могу придумать какой-нибудь способ со стилем, но вы можете просто установить текст флажка в ноль и поместить TextView слева от флажка с нужным вам текстом.

17 голосов
/ 25 июня 2015

Просто скопируйте это:

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Your text:"/>
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            />
    </LinearLayout>

Удачного кодирования!:)

13 голосов
/ 08 января 2015

Текст флажка может не совпадать по левому краю с

android:button="@null"
android:drawableRight="@android:drawable/btn_radio"

на некоторых устройствах.Можно использовать CheckedTextView в качестве замены, чтобы избежать проблемы,

<CheckedTextView
    ...
    android:checkMark="@android:drawable/btn_radio" />

, и эта ссылка будет полезна: Выровнять текст слева, флажок справа

5 голосов
/ 16 января 2017

По предложению @The Berga Вы можете добавить android:layoutDirection="rtl", но это доступно только с API 17.для динамической реализации, здесь это идет

chkBox.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
5 голосов
/ 09 февраля 2016

Вместо этого вы можете использовать checkedTextView.

http://developer.android.com/reference/android/widget/CheckedTextView.html

3 голосов
/ 17 октября 2014

Кроме того, из Hazhir imput, для этой проблемы необходимо ввести это свойство в настройке xml флажка android: paddingLeft = "0dp", это для того, чтобы избежать пустого пространства слева от флажка.

2 голосов
/ 29 июля 2017

Добавление еще одного ответа на этот вопрос, который использует CheckedTextView, если кто-то пытается сделать это программно.Он также имеет возможность использования пользовательских изображений для флажка.И может быть сделано в одном представлении

final CheckedTextView checkBox = new CheckedTextView(getApplicationContext());
    checkBox.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    checkBox.setId(1);
    checkBox.setCheckMarkDrawable(android.R.drawable.checkbox_off_background);
    checkBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (checkBox.isChecked()){
                checkBox.setChecked(false);
                checkBox.setCheckMarkDrawable(android.R.drawable.checkbox_off_background);
            }else{
                checkBox.setChecked(true);
                checkBox.setCheckMarkDrawable(android.R.drawable.checkbox_on_background);
            }
        }
    });
    checkBox.setTextColor(Color.BLACK);
    checkBox.setGravity(Gravity.LEFT);
    checkBox.setText("hi");

Из XML, если вы хотите инициировать -

<CheckedTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checkMark="@android:drawable/checkbox_off_background"
        android:checked="false"
        android:text="Hi from xml"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...