1415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes/* 2415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes * Copyright (C) 2014 The Android Open Source Project 3415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes * 4415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes * Licensed under the Apache License, Version 2.0 (the "License"); 5415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes * you may not use this file except in compliance with the License. 6415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes * You may obtain a copy of the License at 7415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes * 8415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes * http://www.apache.org/licenses/LICENSE-2.0 9415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes * 10415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes * Unless required by applicable law or agreed to in writing, software 11415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes * distributed under the License is distributed on an "AS IS" BASIS, 12415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes * See the License for the specific language governing permissions and 14415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes * limitations under the License. 15415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes */ 16415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes 172cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banespackage android.support.v7.widget; 18415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes 19415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banesimport android.content.Context; 202cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banesimport android.support.annotation.DrawableRes; 212cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banesimport android.support.v7.internal.widget.TintManager; 222cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banesimport android.support.v7.internal.widget.TintTypedArray; 23415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banesimport android.util.AttributeSet; 24415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banesimport android.widget.CheckedTextView; 25415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes 26415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes/** 27091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * A {@link CheckedTextView} which supports compatible features on older version of the platform. 28091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * 29091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * <p>This will automatically be used when you use {@link CheckedTextView} in your layouts. 30091b0f935e68ce9bfecc2422e60eada33fa3b09cChris Banes * You should only need to manually use this class when writing custom views.</p> 31415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes */ 322cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banespublic class AppCompatCheckedTextView extends CheckedTextView { 33415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes 34415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes private static final int[] TINT_ATTRS = { 35415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes android.R.attr.checkMark 36415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes }; 37415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes 38fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes private TintManager mTintManager; 39415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes 402cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banes public AppCompatCheckedTextView(Context context) { 41415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes this(context, null); 42415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes } 43415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes 442cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banes public AppCompatCheckedTextView(Context context, AttributeSet attrs) { 45fa91294114db5cfa43910d4d921fd06449192420Chris Banes this(context, attrs, android.R.attr.checkedTextViewStyle); 46415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes } 47415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes 482cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banes public AppCompatCheckedTextView(Context context, AttributeSet attrs, int defStyleAttr) { 49415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes super(context, attrs, defStyleAttr); 50415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes 51fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes if (TintManager.SHOULD_BE_USED) { 52fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes TintTypedArray a = TintTypedArray.obtainStyledAttributes(getContext(), attrs, 53fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes TINT_ATTRS, defStyleAttr, 0); 54fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes setCheckMarkDrawable(a.getDrawable(0)); 55fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes a.recycle(); 56415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes 57fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes mTintManager = a.getTintManager(); 58fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes } 59415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes } 60415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes 61415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes @Override 622cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banes public void setCheckMarkDrawable(@DrawableRes int resId) { 63fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes if (mTintManager != null) { 642cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banes setCheckMarkDrawable(mTintManager.getDrawable(resId)); 65fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes } else { 662cccf609662389d6a23dbc0711d5fb2e826e8c63Chris Banes super.setCheckMarkDrawable(resId); 67fd1eb27a3700de31507de34fd1bcc51830fe876cChris Banes } 68415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes } 69415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes 70415f740df4981ef2f5fb462a50c7cf095cc21128Chris Banes} 71