1ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian/* 2ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Copyright (C) 2014 The Android Open Source Project 3ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 4ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Licensed under the Apache License, Version 2.0 (the "License"); 5ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * you may not use this file except in compliance with the License. 6ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * You may obtain a copy of the License at 7ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 8ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * http://www.apache.org/licenses/LICENSE-2.0 9ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 10ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Unless required by applicable law or agreed to in writing, software 11ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * distributed under the License is distributed on an "AS IS" BASIS, 12ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * See the License for the specific language governing permissions and 14ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * limitations under the License. 15ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 16ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 17ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianpackage com.android.dialer.widget; 18ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 19ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.content.Context; 20ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.content.res.TypedArray; 21ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.util.AttributeSet; 22ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.widget.TextView; 23ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.util.ViewUtil; 24ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 25ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian/** TextView which resizes dynamically with respect to text length. */ 26ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianpublic class ResizingTextTextView extends TextView { 27ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 28ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private final int mOriginalTextSize; 29ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private final int mMinTextSize; 30ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 31ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public ResizingTextTextView(Context context, AttributeSet attrs) { 32ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian super(context, attrs); 33ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mOriginalTextSize = (int) getTextSize(); 34ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ResizingText); 35ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mMinTextSize = 36ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian (int) a.getDimension(R.styleable.ResizingText_resizing_text_min_size, mOriginalTextSize); 37ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian a.recycle(); 38ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 39ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 40ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 41ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) { 42ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian super.onTextChanged(text, start, lengthBefore, lengthAfter); 43ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian ViewUtil.resizeText(this, mOriginalTextSize, mMinTextSize); 44ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 45ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 46ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 47ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian protected void onSizeChanged(int w, int h, int oldw, int oldh) { 48ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian super.onSizeChanged(w, h, oldw, oldh); 49ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian ViewUtil.resizeText(this, mOriginalTextSize, mMinTextSize); 50ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 51ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian} 52