2012-09-27 11 views
11

Postępując zgodnie z tym article, udało mi się utworzyć przycisk przełącznika, który jest wykonany z obrazów. Mój przełącznik nie zawiera żadnego tekstu, tylko obrazy włączone/wyłączone.Android ToggleButton

Po utworzeniu mojego przycisku przełączania jest rozciągany i traci proporcje, w jaki sposób mogę zachować oryginalny format?

Są to obrazy im przy:

on http://s14.postimage.org/o4zh0nqzh/toggle_on_9.png

off http://s17.postimage.org/mivfu6mbv/toggle_off_9.png

Kod:

main.xml:

<ToggleButton 
    android:id="@+id/changeNumerals" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:checked="true" 
    android:background="@drawable/toggle_bg" 
    android:textOn="" 
    android:textOff=""    
/> 

odkształcalne/toggle.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="false" android:drawable="@drawable/toggle_off" /> 
    <item android:state_checked="true" android:drawable="@drawable/toggle_on" /> 
</selector> 

odkształcalne/toggle_bg.xml:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+android:id/background" android:drawable="@android:color/transparent" /> 
    <item android:id="@+android:id/toggle" android:drawable="@drawable/toggle" /> 
</layer-list> 
+0

proszę pokazać kod! – Shrikant

+0

użyj zawartości wrap dla wysokości i szerokości przycisku przełączającego – KMI

+0

wrap_content już istnieje ... – aviran

Odpowiedz

5

wymiary są "na sztywno", ale oni skalować do wielkości ekranu.

Więc XML może wyglądać tak:

android:layout_width="64dp" 
android:layout_height="24dp" 

Oficjalna dokumentacja dla dps jest here

13

Spróbuj następujące atrybuty dla <ToggleButton>

android:background="@android:color/transparent" 
android:button="@drawable/toggle_bg" 

Powinien działać. Powodzenia :)

+0

powoduje to umieszczenie obrazu na górze przycisku w jego prawidłowym rozmiarze, ale tło przełącznika to rozciągnięte obrazy przełączania.Próbowałem usunąć Androida: background = "@ drawable/toggle_bg", które usunęło obraz i przywróciło zwykły przycisk przełączania z moimi obrazami przełączania na wierzchu. – aviran

+0

jak mogę dodać ten propert programowo? android: button = "@ drawable/toggle_bg" – user1737884

+0

Możesz użyć jednego z tych setButtonDrawable (int resid) setButtonDrawable (Drawable d) http://developer.android.com/reference/android/widget/CompoundButton.html#setButtonDrawable (int) –

3

Wspieranie wersje z piernik do bieżących tych, skończyło się za pomocą:

<ToggleButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/filterPhotos" 
    android:checked="true" 
    android:textOn="" 
    android:textOff="" 
    android:paddingLeft="5dp" 
    android:drawableRight="@drawable/toggle_filter_photos" 
    android:background="@null"/> 

i rozciągliwej toggle_filter_photos.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/picture_filter_icons" 
      android:state_checked="true" /> 
    <item android:drawable="@drawable/picture_inactive_filter_icons" /> 
</selector> 

inne rozwiązania powyżej nie działało dobrze dla GINGERBREAD i nowszych, ponieważ ikony nie pojawiały się w ogóle (z android:button na GINGERBREAD) lub współczynnik proporcji został utracony (z android:background na JELLY_BEAN_MR1 (4.2.2)).

+0

komentarz w ostatniej pracy dla mnie "android: przycisk na GINGERBREAD" ..dzięki – CoDe

+0

który działa dla mnie, dzięki – yrazlik

Powiązane problemy