Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c3308de authored by Daniel Sandler's avatar Daniel Sandler
Browse files

Fix text transformations in Switches.

In particular, we now honor android:textAllCaps in the
TextAppearance specified for the switch widget itself.
(Now you no longer need to create a separate capitalized
version of your strings to get them to look like the
platform switches.)

Change-Id: Ia48222a6dddd0d0f9115e554dffb621f4d6a2b94
parent 9afbfb5e
Loading
Loading
Loading
Loading
+18 −2
Original line number Original line Diff line number Diff line
@@ -29,6 +29,8 @@ import android.text.Layout;
import android.text.StaticLayout;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.text.TextPaint;
import android.text.TextUtils;
import android.text.TextUtils;
import android.text.method.AllCapsTransformationMethod;
import android.text.method.TransformationMethod2;
import android.util.AttributeSet;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.MotionEvent;
@@ -91,6 +93,7 @@ public class Switch extends CompoundButton {
    private ColorStateList mTextColors;
    private ColorStateList mTextColors;
    private Layout mOnLayout;
    private Layout mOnLayout;
    private Layout mOffLayout;
    private Layout mOffLayout;
    private TransformationMethod2 mSwitchTransformationMethod;


    @SuppressWarnings("hiding")
    @SuppressWarnings("hiding")
    private final Rect mTempRect = new Rect();
    private final Rect mTempRect = new Rect();
@@ -207,6 +210,15 @@ public class Switch extends CompoundButton {


        setSwitchTypefaceByIndex(typefaceIndex, styleIndex);
        setSwitchTypefaceByIndex(typefaceIndex, styleIndex);


        boolean allCaps = appearance.getBoolean(com.android.internal.R.styleable.
                TextAppearance_textAllCaps, false);
        if (allCaps) {
            mSwitchTransformationMethod = new AllCapsTransformationMethod(getContext());
            mSwitchTransformationMethod.setLengthChangesAllowed(true);
        } else {
            mSwitchTransformationMethod = null;
        }

        appearance.recycle();
        appearance.recycle();
    }
    }


@@ -526,8 +538,12 @@ public class Switch extends CompoundButton {
    }
    }


    private Layout makeLayout(CharSequence text) {
    private Layout makeLayout(CharSequence text) {
        return new StaticLayout(text, mTextPaint,
        final CharSequence transformed = (mSwitchTransformationMethod != null)
                (int) Math.ceil(Layout.getDesiredWidth(text, mTextPaint)),
                    ? mSwitchTransformationMethod.getTransformation(text, this)
                    : text;

        return new StaticLayout(transformed, mTextPaint,
                (int) Math.ceil(Layout.getDesiredWidth(transformed, mTextPaint)),
                Layout.Alignment.ALIGN_NORMAL, 1.f, 0, true);
                Layout.Alignment.ALIGN_NORMAL, 1.f, 0, true);
    }
    }