189208232f3b5d1451408d787872504a190bc7ee0Chris Banes/* 289208232f3b5d1451408d787872504a190bc7ee0Chris Banes * Copyright (C) 2013 The Android Open Source Project 389208232f3b5d1451408d787872504a190bc7ee0Chris Banes * 489208232f3b5d1451408d787872504a190bc7ee0Chris Banes * Licensed under the Apache License, Version 2.0 (the "License"); 589208232f3b5d1451408d787872504a190bc7ee0Chris Banes * you may not use this file except in compliance with the License. 689208232f3b5d1451408d787872504a190bc7ee0Chris Banes * You may obtain a copy of the License at 789208232f3b5d1451408d787872504a190bc7ee0Chris Banes * 889208232f3b5d1451408d787872504a190bc7ee0Chris Banes * http://www.apache.org/licenses/LICENSE-2.0 989208232f3b5d1451408d787872504a190bc7ee0Chris Banes * 1089208232f3b5d1451408d787872504a190bc7ee0Chris Banes * Unless required by applicable law or agreed to in writing, software 1189208232f3b5d1451408d787872504a190bc7ee0Chris Banes * distributed under the License is distributed on an "AS IS" BASIS, 1289208232f3b5d1451408d787872504a190bc7ee0Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1389208232f3b5d1451408d787872504a190bc7ee0Chris Banes * See the License for the specific language governing permissions and 1489208232f3b5d1451408d787872504a190bc7ee0Chris Banes * limitations under the License. 1589208232f3b5d1451408d787872504a190bc7ee0Chris Banes */ 1689208232f3b5d1451408d787872504a190bc7ee0Chris Banes 1789208232f3b5d1451408d787872504a190bc7ee0Chris Banespackage android.support.v7.internal.widget; 1889208232f3b5d1451408d787872504a190bc7ee0Chris Banes 1989208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.content.Context; 2089208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.content.res.TypedArray; 2189208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.graphics.Rect; 2289208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.support.v7.appcompat.R; 23415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banesimport android.support.v7.internal.text.AllCapsTransformationMethod; 2489208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.text.method.TransformationMethod; 2589208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.util.AttributeSet; 2689208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.view.View; 2789208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.widget.TextView; 2889208232f3b5d1451408d787872504a190bc7ee0Chris Banes 2989208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport java.util.Locale; 3089208232f3b5d1451408d787872504a190bc7ee0Chris Banes 3189208232f3b5d1451408d787872504a190bc7ee0Chris Banes/** 3289208232f3b5d1451408d787872504a190bc7ee0Chris Banes * @hide 3389208232f3b5d1451408d787872504a190bc7ee0Chris Banes */ 3489208232f3b5d1451408d787872504a190bc7ee0Chris Banespublic class CompatTextView extends TextView { 3589208232f3b5d1451408d787872504a190bc7ee0Chris Banes 3689208232f3b5d1451408d787872504a190bc7ee0Chris Banes public CompatTextView(Context context) { 3789208232f3b5d1451408d787872504a190bc7ee0Chris Banes this(context, null); 3889208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 3989208232f3b5d1451408d787872504a190bc7ee0Chris Banes 4089208232f3b5d1451408d787872504a190bc7ee0Chris Banes public CompatTextView(Context context, AttributeSet attrs) { 4189208232f3b5d1451408d787872504a190bc7ee0Chris Banes this(context, attrs, 0); 4289208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 4389208232f3b5d1451408d787872504a190bc7ee0Chris Banes 4489208232f3b5d1451408d787872504a190bc7ee0Chris Banes public CompatTextView(Context context, AttributeSet attrs, int defStyle) { 4589208232f3b5d1451408d787872504a190bc7ee0Chris Banes super(context, attrs, defStyle); 4689208232f3b5d1451408d787872504a190bc7ee0Chris Banes 4789208232f3b5d1451408d787872504a190bc7ee0Chris Banes boolean allCaps = false; 4889208232f3b5d1451408d787872504a190bc7ee0Chris Banes 4989208232f3b5d1451408d787872504a190bc7ee0Chris Banes TypedArray style = context 5089208232f3b5d1451408d787872504a190bc7ee0Chris Banes .obtainStyledAttributes(attrs, R.styleable.CompatTextView, defStyle, 0); 5189208232f3b5d1451408d787872504a190bc7ee0Chris Banes allCaps = style.getBoolean(R.styleable.CompatTextView_textAllCaps, false); 5289208232f3b5d1451408d787872504a190bc7ee0Chris Banes style.recycle(); 5389208232f3b5d1451408d787872504a190bc7ee0Chris Banes 5489208232f3b5d1451408d787872504a190bc7ee0Chris Banes // Framework impl also checks TextAppearance for textAllCaps. This isn't needed for our 5589208232f3b5d1451408d787872504a190bc7ee0Chris Banes // purposes so has been omitted. 5689208232f3b5d1451408d787872504a190bc7ee0Chris Banes 5789208232f3b5d1451408d787872504a190bc7ee0Chris Banes if (allCaps) { 5889208232f3b5d1451408d787872504a190bc7ee0Chris Banes setTransformationMethod(new AllCapsTransformationMethod(context)); 5989208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 6089208232f3b5d1451408d787872504a190bc7ee0Chris Banes } 6189208232f3b5d1451408d787872504a190bc7ee0Chris Banes} 62