2016-05-10 6 views
2

Ich möchte Schalter wie unten gezeigt anpassen.wie man Schalter in Android besonders anfertigt?

Custom switch

ich versucht habe, 'SwitchCompat', aber es als Bild nicht anpassen können. Unten ist Code.

<style name="CustomSwitchStyle" parent="Theme.AppCompat.Light.NoActionBar"> 
    ... 
    <!-- Active thumb color & Active track color(30% transparency) --> 
    <item name="colorControlActivated">@color/white</item> 
    <!-- Inactive thumb color --> 
    <item name="colorSwitchThumbNormal">@color/white</item> 
    <!-- Inactive track color(30% transparency) --> 
    <item name="android:colorForeground">@android:color/darker_gray</item> 
</style> 

ich auch mit ‚Switch‘ Widget versucht, aber es immer noch dosen't wie die erforderlichen benutzerdefinierten Schalter aussieht.

+0

Haben Sie versucht, es programmatisch zu ändern? –

+0

@jaydroider: Kannst du mich mit einem Beispielcode führen? – kevz

+0

Überprüfen Sie meine Antwort unten. Ich benutze es in einer meiner App. –

Antwort

1

Versuchen Sie es programmatisch zu ändern.

Siehe dies.

public void switchBind(DetailItem item) { 
    switchColor(item.toggle); 
    listSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
       switchColor(b); 
     } 
    }); 
} 

private void switchColor(boolean checked) { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
     listSwitch.getThumbDrawable().setColorFilter(checked ? Color.BLACK : Color.WHITE, PorterDuff.Mode.MULTIPLY); 
     listSwitch.getTrackDrawable().setColorFilter(!checked ? Color.BLACK : Color.WHITE, PorterDuff.Mode.MULTIPLY); 
    } 
} 

EDIT 1:

Eine weitere Möglichkeit, die Farbe wechseln.

private void switchColor(boolean isChecked) { 
    if (Build.VERSION.SDK_INT >= 16) { 
     int thumbColor; 
     int trackColor; 

     if(isChecked) { 
      thumbColor = Color.argb(255, 253, 153, 0); 
      trackColor = thumbColor; 
     } else { 
      thumbColor = Color.argb(255, 236, 236, 236); 
      trackColor = Color.argb(255, 0, 0, 0); 
     } 

     try { 
      getThumbDrawable().setColorFilter(thumbColor, PorterDuff.Mode.MULTIPLY); 
      getTrackDrawable().setColorFilter(trackColor, PorterDuff.Mode.MULTIPLY); 
     } 
     catch (NullPointerException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Hinweis: Farbe ändern, wie Sie wollen.

+0

Ich sehe es – kevz

+0

die Spurfarbe erscheint schwach, wenn ich den Schalter aktiviere. zB: Ich ändere die Spurfarbe auf ROT, wenn der Schalter aktiv ist, aber er erscheint in pink. – kevz

+0

Jeder Stil wird hinzugefügt, um zu wechseln und dann zu entfernen. –

Verwandte Themen