2012-09-27 5 views
11

Mit dieser article konnte ich eine Umschaltfläche erstellen, die aus Bildern besteht. Mein Schalter hat keinen Text, nur ein/aus Bilder.Android ToggleButton

Wenn mein Toggle Button erstellt wird, wird er gestreckt und verliert seine Proportionen. Wie kann ich die Originalgröße beibehalten?

Dies sind die Bilder im mit:

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

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

Der Code:

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

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

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

bitte Code anzeigen! – Shrikant

+0

wrap Inhalt für die Höhe und Breite der Umschaltfläche verwenden – KMI

+0

wrap_content ist schon da ... – aviran

Antwort

5

Die Dimensionen sind "hartcodiert" aber sie werden mit der Größe skalieren von deinem Bildschirm.

So könnte die XML wie folgt aussehen:

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

Die offizielle Dokumentation für dps ist here

13

folgende Attribute Versuchen für <ToggleButton>

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

Es sollte funktionieren. Viel Glück :)

+0

Dies bringt das Bild über die Schaltfläche in der richtigen Größe, aber der Hintergrund des Toggle ist die gestreckte Toggle-Bilder.Ich habe versucht, android zu entfernen: background = "@ drawable/toggle_bg", die das Bild entfernt und die normale Umschalttaste mit meinen Toggle-Bildern darüber gebracht hat. – aviran

+0

Wie füge ich diese Eigenschaft programmatisch hinzu? android: button = "@ drawable/toggle_bg" – user1737884

+0

Sie können einen dieser setButtonDrawable (int resid) verwenden. setButtonDrawable (Drawable d) http://developer.android.com/reference/android/widget/CompoundButton.html#setButtonDrawable (int) –

3

Um Versionen von LEBKUCHEN zu unterstützen bis zu den aktuellen, ich landete mit:

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

und die ziehbar 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> 

Die anderen Lösungen oben funktionierte nicht gut für GINGERBREAD und neuer, da entweder die Symbole überhaupt nicht angezeigt wurden (mit android:button auf GINGERBREAD) oder das Seitenverhältnis verloren ging (mit android:background auf JELLY_BEAN_MR1 (4.2.2)).

+0

Kommentar zuletzt für mich arbeiten "Android: Taste auf Ingwergeburt" ..dank – CoDe

+0

, die für mich funktioniert, danke – yrazlik

Verwandte Themen