19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 Google Inc. 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.internal.widget; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.TypedArray; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.text.Layout; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.TypedValue; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.TextView; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Used by dialogs to change the font size and number of lines to try to fit 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the text to the available space. 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class DialogTitle extends TextView { 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public DialogTitle(Context context, AttributeSet attrs, 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int defStyle) { 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(context, attrs, defStyle); 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public DialogTitle(Context context, AttributeSet attrs) { 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(context, attrs); 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public DialogTitle(Context context) { 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super(context); 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onMeasure(widthMeasureSpec, heightMeasureSpec); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final Layout layout = getLayout(); 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (layout != null) { 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int lineCount = layout.getLineCount(); 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (lineCount > 0) { 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int ellipsisCount = layout.getEllipsisCount(lineCount - 1); 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (ellipsisCount > 0) { 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project setSingleLine(false); 565c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey setMaxLines(2); 575c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey 585c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey final TypedArray a = mContext.obtainStyledAttributes(null, 595c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey android.R.styleable.TextAppearance, android.R.attr.textAppearanceMedium, 60a93347a62ec9887862abb9d6f216906c533a8562Adam Powell android.R.style.TextAppearance_Medium); 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final int textSize = a.getDimensionPixelSize( 625c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey android.R.styleable.TextAppearance_textSize, 0); 635c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey if (textSize != 0) { 645c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey // textSize is already expressed in pixels 655c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize); 665c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey } 675c848ce793f259f38ba8c9ce52dc3bcb360040b6Jeff Sharkey a.recycle(); 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.onMeasure(widthMeasureSpec, heightMeasureSpec); 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 744bdf17c69712b28e82f15f81f39482ff096b7f67Romain Guy} 75