Sağ tarafta android onay kutusu nasıl gösterilir?


149

Varsayılan olarak android onay kutusu sağ tarafta metin ve solda onay kutusu gösterir.Solda metin ile sağ tarafta onay kutusunu
göstermek istiyorum

bunu nasıl başarırım?

Yanıtlar:


41

Stil ile ilgili bir yol düşünemiyorum, ancak onay kutusunun metnini hiçbir şeye ayarlayabilir ve onay kutusunun soluna istediğiniz metni içeren bir TextView koyabilirsiniz.


Bununla ilgili bir sorum var: Düzene tıkladığınızda, (çok kısa bir süre için) tüm satırın seçildiğini göstermelidir. bunu nasıl yaparsınız ve bunun yerel bir efekt olduğunu nasıl taklit edersiniz?
android geliştiricisi

boşver - düzen için bir seçici ayarladım ve şimdi sorun değil.
android geliştiricisi

@androiddeveloper lütfen seçici çözümü gönderebilir misiniz?
Fouad Vahabi

1
@FouadWahabi "res / drawable" içinde bir xml çizimi oluşturabilir, örneğin: stackoverflow.com/a/2038086 ve görünümün / düzenin arka planını bu çekilebilir dosya olacak şekilde ayarlayabilirsiniz. Siz de tıklanabilir hale getirmeniz gerekebilir. Sanırım bununla ilgili bir Google IO dersi de gördüm. emin değil. videolarını kontrol etmenizi şiddetle tavsiye ederiz.
android geliştiricisi

1
@FouadWahabi Seçtiğiniz layout sınıfını genişletebilir ve bu mantığı kendiniz ekleyebilirsiniz. Tüm çocuk görüşlerinin üzerinden geçebilir ve durumlarını değiştirebilirsiniz. Size yardımcı olması için bu bağlantıları kullanabilirsiniz: developer.android.com/samples/CustomChoiceList/src/… , antoine-merle.com/blog/2013/07/17/… . bir clickListener ekleyin ve denetimi değiştirin ve "setChecked" içinde alt görünümlerin durumunu buna göre ayarlayın, ancak yalnızca Checkable'ı uygularlarsa.
android geliştiricisi

370

Sanırım bu soruyu cevaplamak için çok geç, ama aslında amacınıza ulaşmanın bir yolu var. Aşağıdaki satırı onay kutunuza eklemeniz yeterlidir:

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

Onay kutusu için özelleştirilmiş çekmecenizi de kullanabilirsiniz.

Ve bir radioButton için:

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

Ve bunu programlı olarak yapmak istiyorsanız:

Bir düzen tanımlayın ve RightCheckBox olarak adlandırın ve aşağıdaki satırları kopyalayın:

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

ve programlı olarak eklemeniz gerektiğinde, onu bir CheckBox'a şişirmeniz ve kök görünüme eklemeniz yeterlidir.

CheckBox cb = (CheckBox)((LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.check_right_checkbox,null);
rootView.addView(cb);

5
Ve bir onay kutusu için kullanabilirsiniz android:drawableRight="?android:attr/listChoiceIndicatorMultiple". Şimdiye kadar bulduğum sağdaki bir onay kutusu için en iyi çözümün bu olduğunu düşünüyorum.
Pierre-Luc Paour

7
Android 5.0 SDK'nın size RTL cihazları hakkında bir uyarı göstereceğini lütfen unutmayın. Bunu ortadan android:drawableEndkaldırmak için , sadece ek olarak ekleyin android:drawableRight(aynı değerle).
Quentin S.

6
Bu çözüm, sorunu çözmek için oldukça iyi çalıştı. Bununla birlikte, Android 5. + 'da standart widget, kontrolün etrafındaki küçük bir alana çekilebilir dalgasını içerirken, bu değiştirilmiş widget, dalgalanmanın widget'ın sınırlarının çok ötesine genişlemesini sağlar. Bu tekniği kullanıyorsanız, arka planı dikdörtgen bir maske ile bir dalgalanma çekilebilir kullanacak şekilde ayarlamanızı öneririm.
Justin Pollard

2
Android, hepsi bir android çekilebilir veya özel bir çekilebilir çizmek için değiştirilebilen bir düzine görünüm nesnesi sağlar. Nesne üzerinde dalgalanma efekti (5.0+) istiyorsanız, arka planını dalgalanmayı etkinleştiren bir XML çekilebilir olarak ayarlayın. Aşağıdaki bağlantı, doğru drwable setiyle çeşitli örnek görünüm nesneleri, CheckedTextView, CheckBox, ToggleButton, vb. Gösterir. landenlabs.com/android/uicomponents/uicomponents.html#checkbox
LanDenLabs

6
Metnin ortasında yuvarlak bir dalgalanma gösteriyor, ancak doğru çizilebilirde değil, bu nedenle modern Android sürümlerinde çirkin görünüyor
Leo Droidcoder

125

Yapabilirsin

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

Aşağıdaki satır yeterli

android:layoutDirection="rtl"

3
Aynı zamanda hem şık hem de şık. Şerefe!
Roman Samoilenko

İyi numara adam! beklenen yansıtma efektini elde etmek için yerçekimini unutmayın: android: gravity = "right | center".
Tobliug

4
bu doğru yol değildir, çünkü cihazınız bir RTL dilindeyse, doğru görünmeyecektir.
Martin Marconcini

cb.setLayoutDirection (CheckBox.LAYOUT_DIRECTION_RTL);
paakjis

2
android:gravity="end|center_vertical"Düzen şu anda başladığı için solda metin gösterimini ayarlamanız gerekiyor .
MainActivity

52

Ekleyebilirsiniz, android:layoutDirection="rtl"ancak yalnızca API 17 ile kullanılabilir.


19

Sadece şunu kopyalayın:

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

Mutlu kodlama! :)


15

Onay kutusu metni ile sola hizalanmıyor olabilir

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

bazı cihazlarda. CheckedTextView'ı sorunu önlemek için yedek olarak kullanabilir ,

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

ve bu bağlantı yardımcı olacaktır: Metni sola hizala, onay kutusu sağa


Bu bir radyo düğmesidir. Malzeme onay kutusu için olana ne dersiniz?
Monica Aspiras Labbao

1
Onay kutusu kullanımı içinandroid:checkMark="?android:attr/listChoiceIndicatorMultiple"
Philipp

Radyo düğmesinin kullanımı içinandroid: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" />`

Bu aynı zamanda metni sağa hizalı yapar, böylece onay kutusu görünümü ana genişlikle eşleşiyorsa, tuhaf görünecektir.
David Rektör

7

@ The Berga tarafından önerildiği gibi ekleyebilirsiniz, android:layoutDirection="rtl"ancak
dinamik uygulama için yalnızca API 17 ile kullanılabilir , işte burada

chkBox.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);


3

ayrıca Hazhir imput'tan, bu sorun için, bu özelliği xml yapılandırması android: paddingLeft = "0dp" onay kutusuna enjekte etmek gereklidir, bu, sol taraftaki onay kutusundaki boş alanı önlemek içindir.


3

CheckedTextView kullanan bu soruya başka bir yanıt eklemek Herhangi biri bunu programlı olarak yapmaya çalışıyorsa. Ayrıca, onay kutusu için özel resimler kullanma seçeneğine de sahiptir. Ve tek bir Görünümde yapılabilir

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'den başlatmak istiyorsanız -

<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

Aşağıdaki bağlantı, doğru çekilebilirliği ayarlayarak sağdaki animasyonlu bir onay kutusu ile çeşitli Standart Android görünüm nesnelerinin nasıl oluşturulacağını gösterir.

Dalgalanma efekti elde etmek için arka planı ayarlayın.

[sağda ve solda örnek onay kutusu bulunan web sitesine bağlantı.] [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" />

Örnek checkline.xml (çekilebilir, drawable-v21'deki animasyonlu sürüm için bağlantıya bakın)

Örnek transparent_ripple.xml (drawable-v21'de)

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


Örnek transparent_ripple.xml (çekilebilir durumda, yalnızca dalgalanma olmadığını vurgulayın

<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

A kullanmak zorunlu değilse CheckBox, Switchbunun yerine a kullanabilirsiniz . Bir Anahtar, varsayılan olarak sol taraftaki metni gösterir.


0

Bunu da kullanabilirsiniz,

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

Biraz ayrıntı veya daha fazla çalışma için bir referans eklemek her zaman ekstra kredidir. Cevaplarınızı daha kullanışlı hale
getirir

-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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.