web-dev-qa-db-ja.com

右側にAndroidチェックボックスを表示する方法は?

デフォルトでは、Androidチェックボックスは右側にテキストを表示し、左側にチェックボックスを表示します
右側にチェックボックスを表示し、左側にテキストを表示したい

どうすればこれを達成できますか?

126
UMAR

スタイリングの方法を考えることはできませんが、チェックボックスのテキストを何も設定せずに、希望するテキストを含むチェックボックスの左側にTextViewを配置することができます。

40
xil3

この質問に答えるのは遅すぎると思いますが、実際にはあなたの目標を達成する方法があります。チェックボックスに次の行を追加するだけです。

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

チェックボックス用にカスタマイズしたドロウアブルも使用できます。

そしてradioButtonの場合:

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);
336
Hazhir

できるよ

<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"
97
Mahesh Lad

Android:layoutDirection="rtl"を追加できますが、API 17でのみ使用可能です。

50
The Berga

これをコピーしてください:

    <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>

ハッピーコディング! :)

19
Ivo Stoyanov

チェックボックスのテキストが左に揃えられていない可能性があります

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

一部のデバイスで。問題を回避するための代替として CheckedTextView を使用できます。

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

このリンクは役に立ちます: テキストを左に揃え、チェックボックスを右に

13
cfh008

代わりにcheckedTextViewを使用できます。

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

5
Abhigyan

@The Bergaが示唆するように、Android:layoutDirection="rtl"を追加できますが、API 17でのみ利用可能です。
動的実装の場合、ここにあります

chkBox.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
5
Sri Kanth

さらにHazhir入力から、この問題はチェックボックスxml設定Android:paddingLeft = "0dp"にそのプロパティを挿入する必要があるため、これはチェックボックス左側の空きスペースを避けるためです。

3
zeusboy

誰かがプログラムでそれをしようとしている場合、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"/>
2
Kapil G

次のリンクは、右側のドロアブルを設定することにより、右側にアニメーション化されたチェックボックスを使用して、いくつかの標準Androidビューオブジェクトをレンダリングする方法を示しています。

波及効果を得るために背景を設定します。

[左右にサンプルチェックボックスがあるウェブサイトへのリンク。] [1] http://landenlabs.com/Android/uicomponents/uicomponents.html#checkbox

         <Button
            Android:id="@+id/p2Button1"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"

            Android:background="@drawable/transparent_ripple"
            Android:drawableRight="@drawable/checkline"
            Android:gravity="left|center_vertical"
            Android:text="Button"
            Android:textAllCaps="false"

            Android:textColor="@Android:color/white"
            Android:textSize="@dimen/buttonTextSize" />

        <Android.support.v7.widget.AppCompatButton
            Android:id="@+id/p2Button2"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"

            Android:background="@drawable/transparent_ripple"
            Android:drawableRight="@drawable/checkline"
            Android:gravity="left|center_vertical"
            Android:text="AppCompatButton"
            Android:textAllCaps="false"

            Android:textColor="@Android:color/white"
            Android:textSize="@dimen/buttonTextSize" />

        <TextView
            Android:id="@+id/p2TextView1"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"

            Android:background="@drawable/transparent_ripple"
            Android:drawableRight="@drawable/checkline"
            Android:gravity="left|center_vertical"
            Android:hapticFeedbackEnabled="true"

            Android:text="TextView"
            Android:textColor="@Android:color/white"
            Android:textSize="@dimen/buttonTextSize" />

        <Android.support.v7.widget.AppCompatTextView
            Android:id="@+id/p2TextView2"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"

            Android:background="@drawable/transparent_ripple"
            Android:drawableRight="@drawable/checkline"
            Android:gravity="left|center_vertical"
            Android:hapticFeedbackEnabled="true"

            Android:text="AppCompatTextView"
            Android:textColor="@Android:color/white"
            Android:textSize="@dimen/buttonTextSize" />

        <View
            Android:layout_width="match_parent"
            Android:layout_height="1dp"
            Android:background="@Android:color/white" />

        <CheckBox
            Android:id="@+id/p2Checkbox1"
            Android:layout_width="match_parent"
            Android:layout_height="@dimen/buttonHeight"
            Android:background="@drawable/transparent_ripple"
            Android:button="@null"
            Android:checked="true"
            Android:drawableRight="@drawable/checkline"
            Android:gravity="left|center_vertical"
            Android:text="CheckBox"
            Android:textColor="@Android:color/white"
            Android:textSize="@dimen/buttonTextSize" />

        <Android.support.v7.widget.AppCompatCheckBox
            Android:id="@+id/p2Checkbox2"
            Android:layout_width="match_parent"
            Android:layout_height="@dimen/buttonHeight"
            Android:background="@drawable/transparent_ripple"
            Android:button="@null"
            Android:checked="true"
            Android:drawableRight="@drawable/checkline"
            Android:gravity="left|center_vertical"
            Android:text="AppCompatCheckBox"
            Android:textColor="@Android:color/white"
            Android:textSize="@dimen/buttonTextSize" />

        <Android.support.v7.widget.AppCompatCheckedTextView
            Android:id="@+id/p2Checkbox3"
            Android:layout_width="match_parent"
            Android:layout_height="@dimen/buttonHeight"
            Android:background="@drawable/transparent_ripple"
            Android:checkMark="@drawable/checkline"
            Android:checked="true"
            Android:gravity="left|center_vertical"
            Android:text="AppCompatCheckedTextView"
            Android:textColor="@Android:color/white"
            Android:textSize="@dimen/buttonTextSize" />

        <!--  Android:checkMark="?android:attr/listChoiceIndicatorMultiple" -->
        <CheckedTextView
            Android:id="@+id/p2Checkbox4"
            Android:layout_width="match_parent"
            Android:layout_height="@dimen/buttonHeight"
            Android:background="@drawable/transparent_ripple"
            Android:checkMark="@drawable/checkline"
            Android:checked="true"
            Android:gravity="left|center_vertical"
            Android:text="CheckedTextView"
            Android:textColor="@Android:color/white"
            Android:textSize="@dimen/buttonTextSize" />

        <CheckBox
            Android:id="@+id/p2Checkbox5"
            Android:layout_width="match_parent"
            Android:layout_height="@dimen/buttonHeight"
            Android:background="@drawable/transparent_ripple"
            Android:checked="true"
            Android:gravity="center_vertical|end"
            Android:text="CheckBox"
            Android:textColor="@Android:color/white"
            Android:textSize="@dimen/buttonTextSize" />

        <View
            Android:layout_width="match_parent"
            Android:layout_height="1dp"
            Android:background="@Android:color/white" />


        <ToggleButton
            Android:id="@+id/p2ToggleButton1"
            Android:layout_width="match_parent"
            Android:layout_height="@dimen/buttonHeight"
            Android:background="@drawable/transparent_ripple"
            Android:checked="true"
            Android:drawableRight="@drawable/checkline"
            Android:gravity="center_vertical|left"
            Android:textAllCaps="false"
            Android:textColor="@Android:color/white"

            Android:textOff="ToggleButtonOff"

            Android:textOn="ToggleButtonOn"
            Android:textSize="@dimen/buttonTextSize" />

        <ToggleButton
            Android:id="@+id/p2ToggleButton2"
            Android:layout_width="match_parent"
            Android:layout_height="@dimen/buttonHeight"
            Android:background="@drawable/transparent_ripple"
            Android:checked="true"
            Android:drawableRight="@drawable/btn_check_material_anim"
            Android:gravity="center_vertical|left"
            Android:textAllCaps="false"

            Android:textColor="@Android:color/white"
            Android:textOff="ToggleBtnnAnimOff"
            Android:textOn="ToggleBtnnAnimOn"
            Android:textSize="@dimen/buttonTextSize" />

サンプルcheckline.xml(drawableで、drawable-v21のアニメーションバージョンのリンクを参照)

サンプルのtransparent_ripple.xml(drawable-v21内)

<!-- Limit ripple to view object, can also use shape such as oval -->
<item Android:id="@Android:id/mask" Android:drawable="@Android:color/white" />

<item>
    <selector xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:enterFadeDuration="200"
        Android:exitFadeDuration="200">

        <item Android:state_pressed="true">
            <shape Android:shape="rectangle">
                <solid Android:color="#80c0c000" />
            </shape>
        </item>
    </selector>
</item>

サンプルのtransparent_ripple.xml(ドローアブルで、使用可能なリップルのみを強調表示しない

<item Android:state_pressed="true">
    <shape Android:shape="rectangle">
        <solid Android:color="#80c0c000" />
    </shape>
</item>
<item>
    <shape Android:shape="rectangle">
        <solid Android:color="@Android:color/transparent" />
    </shape>
</item>
0
LanDenLabs

CheckBoxの使用が必須ではない場合は、代わりにSwitchを使用できます。デフォルトでは、スイッチの左側にテキストが表示されます。

0
Oliver Kranz