2012-03-30 5 views
11

In android die Toggle buttons sind unten aussieht wie -Wipptaste in Iphone Stil

Android

Können wir das Iphone Stil wie unten als ändern -

Iphone

Und Können wir Die iPhone-Funktionalität der Toggle-Taste wie ziehen, um die Funktion auch umzuschalten.

Wie wird diese Aktion ausgeführt? Danke im Voraus.

+0

meine Antwort Siehe: http://www.mokasocial.com/2011/07/ sexily-styled-toggle-buttons-for-android/ –

+0

Grund für den Downvote? – Praveenkumar

+0

Das bin nicht ich, würde ich nicht für eine solche Frage ablehnen, aber ich denke, das ist, weil Sie nicht geschrieben haben, was Sie bisher versucht haben, nur auf eine ganze Antwort warten, vielleicht auch, weil es in Android Richtlinien gesagt wird: Do not Imitieren UI-Elemente von anderen Plattformen http://developer.android.com/design/patterns/pure-android.html –

Antwort

17

Weitere Informationen zu diesem Link: http://www.mokasocial.com/2011/07/sexily-styled-toggle-buttons-for-android/

<ToggleButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/toggle_me"/> 

und ziehbar wird so etwas wie:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true" 
     android:drawable="@drawable/toggle_me_on" /> <!-- checked --> 
    <item android:drawable="@drawable/toggle_me_off" /> <!-- default/unchecked --> 
</selector> 
+0

+1 Netter Ansatz. – Praveenkumar

+0

Ich habe bereits diesen Link, wenn ich meine Frage hier posten. Wie auch immer, danke für deinen Link – Praveenkumar

+0

Vielleicht kannst du diese Antwort akzeptieren, wenn sie deine Bedürfnisse erfüllt ... –

0

nehmen alle Bilder von aus- und Taste und ein Layout in relativ Layout machen wie diese

  <RelativeLayout 
       android:id="@+id/setting1" 
       android:layout_width="90dp" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentTop="true" 
       android:background="@drawable/switchon" 
       android:clickable="true" 
       android:onClick="setting1Click" > 

       <ImageView 
        android:id="@+id/settingicon" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentRight="true" 
        android:src="@drawable/switchball" /> 

       <TextView 
        android:id="@+id/calsettingtxt" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_centerVertical="true" 
        android:layout_marginRight="10dp" 
        android:layout_toLeftOf="@+id/settingicon" 
        android:text="@string/settingon" 
        android:textColor="@color/black" 
        android:textSize="18sp" 
        android:textStyle="bold" /> 
      </RelativeLayout> 

dann in Code, wenn sie auf gedrückt ma ke die Hintergrundressource als aus

6

Verwendung von unten Code von Android-Switch-Demo Beispiel. Ich kann die gewünschte Ausgabe erhalten.

public MySwitch(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 

    mTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); 
    Resources res = getResources(); 
    mTextPaint.density = res.getDisplayMetrics().density; 
    mTextPaint.setShadowLayer(0.5f, 1.0f, 1.0f, Color.BLACK); 

    TypedArray a = context.obtainStyledAttributes(attrs, 
      R.styleable.MySwitch, defStyle, 0); 

    mThumbDrawable = a.getDrawable(R.styleable.MySwitch_thumb); 
    mTrackDrawable = a.getDrawable(R.styleable.MySwitch_track); 
    mTextOn = a.getText(R.styleable.MySwitch_textOn); 
    mTextOff = a.getText(R.styleable.MySwitch_textOff); 
    mTextOutsideTrack = a.getBoolean(R.styleable.MySwitch_textOutsideTrack, false); 
    mTextOnThumb = a.getBoolean(R.styleable.MySwitch_textOnThumb, false); 
    mThumbTextPadding = a.getDimensionPixelSize(R.styleable.MySwitch_thumbTextPadding, 0); 
    mTrackTextPadding = a.getDimensionPixelSize(R.styleable.MySwitch_trackTextPadding, 0); 
    mSwitchMinWidth = a.getDimensionPixelSize(R.styleable.MySwitch_switchMinWidth, 0); 
    mSwitchMinHeight = a.getDimensionPixelSize(R.styleable.MySwitch_switchMinHeight, 0); 
    mSwitchPadding = a.getDimensionPixelSize(R.styleable.MySwitch_switchPadding, 0); 

    mTrackDrawable.getPadding(mTrackPaddingRect) ; 
    //Log.d(TAG, "mTrackPaddingRect=" + mTrackPaddingRect); 
    mThumbDrawable.getPadding(mThumbPaddingRect); 
    //Log.d(TAG, "mThumbPaddingRect=" + mTrackPaddingRect); 


    int appearance = a.getResourceId(R.styleable.MySwitch_switchTextAppearanceAttrib, 0); 
    if (appearance != 0) { 
     setSwitchTextAppearance(context, appearance); 
    } 
    a.recycle(); 

    ViewConfiguration config = ViewConfiguration.get(context); 
    mTouchSlop = config.getScaledTouchSlop(); 
    mMinFlingVelocity = config.getScaledMinimumFlingVelocity(); 

    // Refresh display with current params 
    refreshDrawableState(); 
    setChecked(isChecked()); 
    this.setClickable(true); 
    //this.setOnClickListener(clickListener); 
} 

Screenshot der Anwendung -

image

+0

es passiert so für einige Geräte der swtch zeigt nicht die Farbe (grau für beide an und aus), und auf einigen Geräten ist seine Größe wirklich groß. Irgendeine Problemumgehung? –

+0

@TheUnknown Nein, ich habe damit nicht umgehen können. Arbeitet mit iOS-Entwicklung. – Praveenkumar

+0

oh ok .. danke dir :) –

6

Wenn Sie mit Formen tun wollen (ohne Bilder zu verwenden) dies versuchen. Derzeit im mit es in einer benutzerdefinierten Checkbox enter image description here enter image description here

<com.myapp.views.MyCheckBox xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@android:id/checkbox" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="5dp" 
     android:button="@null" 
     android:checked="false" 
     android:clickable="false" 
     android:drawableRight="@drawable/checkbox_selector" 
     android:focusable="false" 
     android:textColor="@color/orange" /> 

checkbox_selector.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_button_off" /> <!-- pressed --> 
    <item android:state_checked="true" 
     android:drawable="@drawable/toggle_button_on" /> <!-- focused --> 
    <!-- default --> 
    <item 
     android:drawable="@drawable/toggle_button_off" /> 
</selector> 

toggle_button_off.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/toggle_background_off"></item> 
    <item 


     android:drawable="@drawable/white_toggle_icon" 
     android:left="2dp" 
     android:right="27.5dp" 
     android:bottom="1.5dp" 
     android:top="1.5dp"></item> 
</layer-list> 

toggle_button_on.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/toggle_background_on"></item> 

    <item 


     android:drawable="@drawable/white_toggle_icon" 
     android:right="2dp" 
     android:left="27.5dp" 
     android:bottom="1.5dp" 
     android:top="1.5dp"></item> 
</layer-list> 

toggle_background_off.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 


    <size android:height="32dp" android:width="60dp"/> 
    <solid android:width="1dp" android:color="#919090"/> 

    <corners android:radius="18dp" /> 

</shape> 

toggle_background_on.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 


    <size android:height="32dp" android:width="60dp"/> 
    <solid android:width="1dp" android:color="@color/orange"/> 

    <corners android:radius="18dp" /> 
</shape> 

white_toggle_icon.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 
<solid android:color="#ffffff"/> 
    <stroke android:width="2dp" android:color="#fff" /> 
    <size android:width="25dp" android:height="25dp"/> 
</shape> 
+0

bitte erklären, wie Sie anpassen ** com.myapp.views.MyCheckBox **? –

+0

das ist eine gute Antwort, aber der Swipe funktioniert nicht so – xanexpt

+0

Große Antwort .. Danke .. –