오른쪽에 안드로이드 확인란을 표시하는 방법은 무엇입니까?


146

기본적으로 안드로이드 확인란은 오른쪽에 텍스트
를 표시하고 왼쪽 에는 확인란을 표시합니다. 왼쪽에 텍스트가있는 오른쪽에 확인란을 표시하고 싶습니다

어떻게하면 되나요?

답변:


41

스타일 지정 방법을 생각할 수는 없지만 확인란의 텍스트를 아무것도 설정하지 않고 원하는 텍스트로 확인란 왼쪽에 TextView를 넣을 수 있습니다.


나는 이것에 대해 질문이있다 : 당신이 레이아웃을 클릭하면 (매우 짧은 시간 동안) 전체 행이 선택되었음을 표시해야합니다. 어떻게하면 기본 효과임을 시뮬레이트합니까?
안드로이드 개발자

신경 쓰지 마라-셀렉터를 레이아웃으로 설정했으며 이제는 괜찮습니다.
안드로이드 개발자

@androiddeveloper 선택기 솔루션을 게시 할 수 있습니까?
Fouad Wahabi

1
@FouadWahabi "res / drawable"에서 XML 드로어 블을 stackoverflow.com/a/2038086 과 같이 생성 하고보기 / 레이아웃의 배경을이 드로어 블 파일로 설정할 수 있습니다. 클릭 가능하게 만들어야 할 수도 있습니다. Google IO 강의도 본 것 같습니다. 확실하지 않다. 그들의 비디오를 확인하는 것이 좋습니다.
Android 개발자

1
@FouadWahabi 선택한 레이아웃 클래스를 확장하고이 논리를 직접 추가 할 수 있습니다. 모든 자식 뷰를 살펴보고 상태를 토글 할 수 있습니다. 이러한 링크를 사용하면 도움이 될 수 있습니다 : developer.android.com/samples/CustomChoiceList/src/… , antoine-merle.com/blog/2013/07/17/… . clickListener를 추가하고 검사를 토글하고 "setChecked"내부에서 Checkable을 구현하는 경우에만 하위보기의 상태를 적절하게 설정하십시오.
안드로이드 개발자

362

이 질문에 대답하기에는 너무 늦었지만 실제로 목표를 달성 할 수있는 방법이 있습니다. 확인란에 다음 줄을 추가하면됩니다.

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

5
확인란의 경우을 사용할 수 있습니다 android:drawableRight="?android:attr/listChoiceIndicatorMultiple". 나는 이것이 지금까지 찾은 오른쪽의 확인란에 가장 적합한 솔루션이라고 생각합니다.
Pierre-Luc Paour 2019

7
Android 5.0 SDK는 RTL 기기에 대한 경고를 표시합니다. 그것을 없애 android:drawableEnd려면 android:drawableRight(같은 값으로) 추가하십시오.
Quentin S.

6
이 솔루션은 문제를 해결하기 위해 잘 작동했습니다. 그러나 Android 5. +에서는 표준 위젯에 체크 주변의 작은 영역에 대한 리플 드로어 블이 포함되어 있지만이 수정 된 위젯을 사용하면 리플이 위젯 자체의 경계를 넘어 확장 될 수 있습니다. 이 기술을 사용하는 경우 사각형 마스크로 리플 드로어 블을 사용하도록 배경을 설정하는 것이 좋습니다.
저스틴 폴라드

2
안드로이드는 12 개의 뷰 객체를 제공하며, 모두 안드로이드 드로어 블 또는 커스텀 드로어 블을 그리도록 변경할 수 있습니다. 객체에 잔물결 효과 (5.0+)를 원하는 경우 배경을 잔물결을 가능하게하는 XML 드로어 블로 설정하면됩니다. 다음 링크는 올바른 drwable 세트가있는 여러 샘플보기 오브젝트, CheckedTextView, CheckBox, ToggleButton 등을 보여줍니다. landenlabs.com/android/uicomponents/uicomponents.html#checkbox
LanDenLabs

6
그것은 텍스트의 중앙에 둥근 리플을 보여 주지만하지 않을 권리 당김에 따라서 현대 안드로이드 버전에 추한 모습
레오 Droidcoder에게

122

넌 할 수있어

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

3
동시에 해키와 우아함. 건배!
Roman Samoilenko

좋은 트릭 맨! 예상되는 미러링 효과를 얻으려면 중력 : android : gravity = "right | center"를 잊지 마십시오.
Tobliug

3
장치가 RTL 언어 인 경우 제대로 보이지 않으므로 올바른 방법이 아닙니다.
Martin Marconcini

cb.setLayoutDirection (CheckBox.LAYOUT_DIRECTION_RTL);
paakjis

1
android:gravity="end|center_vertical"레이아웃이 바로 시작되므로 텍스트가 왼쪽에 표시 되도록 설정해야합니다 .
Serge

52

추가 할 수 android:layoutDirection="rtl"있지만 API 17에서만 사용할 수 있습니다.


19

이것을 복사하십시오 :

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

행복한 코딩! :)


14

확인란 텍스트가 왼쪽에 맞지 않을 수 있습니다

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

일부 장치에서. CheckedTextView 를 대체품으로 사용 하여 문제를 피할 수 있습니다.

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

이 링크가 도움이 될 것입니다 : 왼쪽 텍스트 정렬, 오른쪽 확인란


라디오 버튼입니다. 소재 체크 박스는 어떻습니까?
Monica Aspiras Labbao

1
확인란 사용android:checkMark="?android:attr/listChoiceIndicatorMultiple"
Philipp

라디오 버튼 사용android:checkMark="?android:attr/listChoiceIndicatorSingle"
Philipp

13
    <android.support.v7.widget.AppCompatCheckBox
  android:id="@+id/checkBox"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="10dp"
  android:layoutDirection="rtl"
  android:text="text" />`

또한 텍스트가 오른쪽 정렬되므로 확인란보기가 부모 너비와 일치하면 이상하게 보입니다.
David Rector

6

@The Berga가 제안한 것처럼 추가 할 수는 android:layoutDirection="rtl"있지만 API 17에서만 사용할 수 있습니다.
동적 구현을 ​​위해 여기에 있습니다.

chkBox.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);


3

또한 Hazhir imput 에서이 문제가 필요하면 확인란 xml 구성 android : paddingLeft = "0dp"에 해당 속성을 삽입해야합니다.이 확인란 왼쪽의 빈 공간을 피하기위한 것입니다.


3

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

0

다음 링크는 오른쪽 드로어 블을 설정하여 오른쪽에 애니메이션 확인란이있는 여러 표준 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-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

필수가 아닌 경우 대신 CheckBox사용할 수 있습니다 Switch. 스위치는 기본적으로 왼쪽에 텍스트를 표시합니다.


0

이것을 사용할 수도 있습니다.

<CheckBox
       android:layout_width="match_parent"     
       android:layout_height="@dimen/button_height_35"
       android:text="@string/english"
       android:checked="true"
       android:paddingEnd="@dimen/padding_5"
       android:paddingStart="@dimen/padding_5"
       android:layoutDirection="rtl"
       android:drawablePadding="@dimen/padding_5"
       android:drawableEnd="@drawable/ic_english"
       style="@style/TextStyleSemiBold"
       android:textSize="@dimen/text_15"
       android:button="@drawable/language_selector"/>

약간의 세부 사항이나 추가 연구를위한 참조를 포함시키는 것은 항상 추가 크레딧입니다. 답변을 더 유용하게 만듭니다
mw509

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


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/location_permissions"
            android:textAppearance="@style/TextAppearance.AppCompat.Medium"
            android:textColor="@android:color/black" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <CheckBox
                android:id="@+id/location_permission_checkbox"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_marginRight="8dp"
                android:onClick="onLocationPermissionClicked" />

        </RelativeLayout>
    </LinearLayout>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.