İki görüntüyü farklı durumda kullanan geçiş düğmesi


101

AÇIK / KAPALI durumu yerine iki resim kullanarak bir geçiş düğmesi yapmam gerekiyor.

Kapalı durumda bir arka plan görüntüsü ayarlıyorum, ancak arka plan görüntüsünü kullanırken KAPALI metni kaldırılamıyor.

Ve geçiş düğmesine tıklayarak AÇIK durumuna başka bir görüntü ayarlayamıyorum :( Android'de yeniyim. Umarım bu sorundan kurtulmama yardımcı olursunuz


Yanıtlar:


219

Bunu yap:

<ToggleButton 
        android:id="@+id/toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/check"   <!--check.xml-->
        android:layout_margin="10dp"
        android:textOn=""
        android:textOff=""
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:layout_centerVertical="true"/>

çekilebilir klasörde check.xml oluştur

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/selected_image"
          android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/unselected_image"
        android:state_checked="false"/>

 </selector>

1
Check.xml'de iki farklı geçiş düğmesi durumu olarak çalışacak iki resim ekleyin (seçili / seçili değil)
AkashG

19
Arka planın gerilmesiyle ilgili bir sorununuz mu var?
Mike Bevz

2
android: textOn = "" android: textOff = "" aradığım şeydi
png

9
Başkalarının da bu sorunu var gibi göründüğü için, çözümümü buraya ekliyorum. Ekle android:background="@null"ve android:drawableRight="@drawable/check". Genellikle geçiş düğmelerinin sağa yaslanmış olduğunu buldum. Sola yaslanmış olarak ihtiyacınız varsa, şunu kullanınandroid:drawableLeft
Patrick

1
@Patrick Ama ya merkeze hizalanmasını istiyorsanız? ... tüm cihazlarda. Öyleyse kenar boşluklarına ve dolguya girmeyelim.
Martin Erlic

47

AkashG'nin çözümü benim için çalışmıyor. Check.xml'yi arka plana ayarladığımda, sadece dikey yönde çizgili. Bu sorunu çözmek için check.xml'yi "android: button" özelliğine ayarlamanız gerekir:

<ToggleButton 
    android:id="@+id/toggle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:button="@drawable/check"   //check.xml
    android:background="@null"/>

check.xml:

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/selected_image"
          android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/unselected_image"
          android:state_checked="false"/>
    </selector>

10
ToggleButton, ana CompoundButton'a sahiptir. Ve CompoundButton'da android: düğme özelliği vardır: developer.android.com/reference/android/…
MistaGreen

3
Bu doğru cevap olmalı. Kabul edilen cevap, uzatılmış çekmecelere neden olur.
Bamerza

Görüntülerde şeffaflık varsa android:background="@android:color/transparent"kullanılabilir
Pavel

@Bamerza, hayır bu her durum için geçerli değil. .Svg ile denerseniz arka planı gerilirsiniz.
Farid

2

Bunun gibi bir şey deneyebilirsin. Burada resim düğmesine tıklandığında görüntü görünümüne geçiyorum.

holder.imgitem.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            if(!onclick){
            mSparseBooleanArray.put((Integer) view.getTag(), true);
            holder.imgoverlay.setImageResource(R.drawable.ipad_768x1024_editmode_delete_overlay_com);
            onclick=true;}
            else if(onclick)
            {
                 mSparseBooleanArray.put((Integer) view.getTag(), false);
                  holder.imgoverlay.setImageResource(R.drawable.ipad_768x1024_editmode_selection_com);

            onclick=false;
            }
        }
    });
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.