एंड्रॉइड चेकबॉक्स को दाईं ओर कैसे दिखाएं?


146

डिफ़ॉल्ट रूप से एंड्रॉइड चेकबॉक्स दाईं ओर टेक्स्ट दिखाता है और बाईं ओर चेकबॉक्स
मैं बाईं ओर टेक्स्ट के साथ दाईं ओर चेकबॉक्स दिखाना चाहता हूं

मुझे यह कैसे हासिल होगा?

जवाबों:


41

मैं स्टाइल के साथ एक तरह से नहीं सोच सकता, लेकिन आप बस चेकबॉक्स के पाठ को कुछ भी नहीं सेट कर सकते हैं, और अपने इच्छित पाठ के साथ चेकबॉक्स के बाईं ओर एक टेक्स्ट व्यू डाल सकते हैं।


मेरे पास इस बारे में एक प्रश्न है: जब आप लेआउट पर क्लिक करते हैं, तो यह दिखाना चाहिए (बहुत कम समय के लिए) कि पूरी पंक्ति का चयन किया गया है। आप ऐसा कैसे करते हैं और अनुकरण करते हैं कि यह एक मूल प्रभाव है?
Android डेवलपर

कोई बात नहीं - मैंने लेआउट के लिए एक चयनकर्ता सेट किया है और अब यह ठीक है।
Android डेवलपर

@androiddeveloper कृपया आप चयनकर्ता समाधान पोस्ट कर सकते हैं?
फूफ वहाबी

1
@FouadWahabi आप "Res / drawable" में एक xml drawable बना सकते हैं, जैसे कि: stackoverflow.com/a/2038086 , और इस drawable फ़ाइल होने के लिए दृश्य / लेआउट की पृष्ठभूमि सेट करें। आपको इसे क्लिक करने योग्य बनाने की आवश्यकता हो सकती है। मुझे लगता है कि मैंने इसके बारे में एक Google IO व्याख्यान भी देखा। निश्चित नहीं। अत्यधिक उनके वीडियो की जाँच करने की सलाह देते हैं।
Android डेवलपर

1
@FouadWahabi वैसे आप अपने द्वारा चुने गए लेआउट वर्ग का विस्तार कर सकते हैं, और इस तर्क को अपने द्वारा जोड़ सकते हैं। आप बच्चे के सभी दृश्यों को देख सकते हैं और उनके राज्य को देख सकते हैं। आप डेवलपर की सहायता के लिए उन लिंक का उपयोग कर सकते हैं: developer.android.com/samples/CustomChoiceList/src/… , antoine-merle.com/blog/2013/07/17/… । क्लिकलिस्टर जोड़ें, और चेकिंग टॉगल करें, और "सेट-चेक" के अंदर बच्चे के विचारों की स्थिति को तदनुसार सेट करें लेकिन केवल तभी जब वे चेकेबल को लागू करें।
Android डेवलपर

362

मुझे लगता है कि इस प्रश्न का उत्तर देने में बहुत देर हो चुकी है, लेकिन वास्तव में आपके लक्ष्य को प्राप्त करने का एक तरीका है। आपको बस अपने चेकबॉक्स में निम्न पंक्ति जोड़ने की आवश्यकता है:

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

आप चेकबॉक्स के लिए अपने अनुकूलित ड्रॉबल का भी उपयोग कर सकते हैं।

और एक रेडियोबटन के लिए:

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

और अगर आप इसे प्रोग्रामेटिक रूप से करना चाहते हैं:

एक लेआउट को परिभाषित करें और इसे राइट-चेकबॉक्स नाम दें और निम्नलिखित पंक्तियों को कॉपी करें:

<?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 cb = (CheckBox)((LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.check_right_checkbox,null);
rootView.addView(cb);

5
और एक चेकबॉक्स के लिए, आप उपयोग कर सकते हैं android:drawableRight="?android:attr/listChoiceIndicatorMultiple"। मुझे लगता है कि यह मेरे द्वारा अब तक मिले दाईं ओर एक चेकबॉक्स का सबसे अच्छा समाधान है।
पियरे-ल्यूक पाऊर

7
कृपया ध्यान दें कि Android 5.0 SDK आपको RTL उपकरणों के बारे में एक चेतावनी दिखाएगा। इसे दूर करने के लिए, android:drawableEndइसके अलावा android:drawableRight(समान मूल्य के साथ) जोड़ें।
क्वेंटिन एस।

6
इस समाधान ने समस्या को हल करने के लिए बहुत अच्छी तरह से काम किया। एंड्रॉइड 5. + पर, हालांकि, मानक विजेट में चेक के चारों ओर एक छोटे से क्षेत्र के लिए इसका तरंग दैर्ध्य होता है, लेकिन यह संशोधित विजेट विजेट के सीमा से परे अच्छी तरह से विस्तार करने की अनुमति देता है। यदि इस तकनीक का उपयोग कर रहा है, तो मैं एक आयताकार मुखौटा के साथ एक रिपल ड्रॉबल का उपयोग करने के लिए पृष्ठभूमि सेट करने का सुझाव देता हूं।
जस्टिन पोलार्ड

2
एंड्रॉइड एक दर्जन से अधिक दृश्य ऑब्जेक्ट प्रदान करता है, जिनमें से सभी को एक एंड्रॉइड ड्रॉबल या एक कस्टम ड्रॉबल ड्रा करने के लिए बदल दिया जा सकता है। यदि आप वस्तु पर रिपल इफ़ेक्ट (5.0+) चाहते हैं, तो बस इसकी पृष्ठभूमि को एक्सएमएल ड्रॉबल पर सेट करें जो रिपल को सक्षम करता है। निम्न लिंक सही ड्रिबल सेट के साथ कई नमूने दृश्य वस्तुओं, CheckedTextView, CheckBox, ToggleButton, आदि को दिखाता है। Landenlabs.com/android/uicompords/uicompords.html#checkbox
LanDenLabs

6
यह पाठ के केंद्र में एक गोल लहर दिखाता है, लेकिन सही न होने योग्य पर नहीं, इस प्रकार आधुनिक एंड्रॉइड संस्करणों पर बदसूरत दिखता है
लियो डायरोडोडर

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
एक ही समय में हैक और सुरुचिपूर्ण। चीयर्स!
रोमन समोलेन्को

अच्छा छल आदमी! गुरुत्वाकर्षण को मत भूलना: Android: गुरुत्वाकर्षण = "सही | केंद्र" अपेक्षित मिररिंग प्रभाव पाने के लिए।
तोबलीग

3
यह सही तरीका नहीं है, क्योंकि यदि आपका डिवाइस RTL भाषा पर है, तो यह सही नहीं लगेगा।
मार्टिन मार्कोसिनी

cb.setLayoutDirection (CheckBox.LAYOUT_DIRECTION_RTL);
पाक्जीस

1
android:gravity="end|center_vertical"पाठ प्रदर्शन को बाईं ओर करने के लिए सेट करने की आवश्यकता है क्योंकि लेआउट अभी शुरू होता है।
सर्ज

52

आप जोड़ सकते हैं android:layoutDirection="rtl"लेकिन यह केवल एपीआई 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" />

और यह लिंक उपयोगी होगा: पाठ को संरेखित करें, चेकबॉक्स दाईं ओर


वह एक रेडियो बटन है। कृपया सामग्री चेकबॉक्स के लिए एक के बारे में कैसे?
मोनिका एस्पिरस लाबाबाओ

1
एक चेकबॉक्स के उपयोग के लिएandroid:checkMark="?android:attr/listChoiceIndicatorMultiple"
फिलिप

एक रेडियोबूटन उपयोग के लिएandroid:checkMark="?android:attr/listChoiceIndicatorSingle"
फिलिप

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

यह पाठ को सही-संरेखित भी करता है, इसलिए यदि चेकबॉक्स दृश्य मूल चौड़ाई से मेल खा रहा है, तो यह अजीब लगेगा।
डेविड रेक्टर

6

जैसा कि @The Berga द्वारा सुझाया गया है, android:layoutDirection="rtl"लेकिन आप इसे केवल API 17 के साथ उपलब्ध कर सकते हैं ।
गतिशील कार्यान्वयन के लिए, यहाँ यह जाता है

chkBox.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);


3

इसके अलावा, हज़ीर इंप्यूट से, इस मुद्दे के लिए आवश्यक है कि चेकबॉक्स 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

निम्न लिंक यह दर्शाता है कि दाएं ओर एक एनिमेटेड चेकबॉक्स के साथ सीवेरीवल स्टैंडर्ड एंड्रॉइड व्यू ऑब्जेक्ट को सही ड्रॉबल सेट करके कैसे रेंडर किया जाए।

तरंग प्रभाव प्राप्त करने के लिए पृष्ठभूमि सेट करें।

[दाईं और बाईं ओर चेकबॉक्स के साथ वेबसाइट से लिंक करें।] [1] http://landenlabs.com/android/uicompords/uicompords.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" />

नमूना चेकलाइन। Xml (ड्रा करने योग्य में, ड्रॉबल-वी 21 में एनिमेटेड संस्करण के लिए लिंक देखें)

पारदर्शी पारदर्शी_रीपल .xml (ड्रॉबल-वी 21 में)

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


नमूना पारदर्शी_रिप्पल। 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>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.