mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-28 15:56:49 +00:00
Resize text in drop target button if the text displayed is truncated vertically
“Don’t suggest app” text is cut off at the bottom in tablet when it is set to have largest font and display size before this fix. This change is to check if the text is displayed completely with available height. If not, decrease the text size until it does Fix: 264732627 Test: manual Change-Id: I8331a40f2cd767a7b2807c15d9772566baf9f355
This commit is contained in:
@@ -57,6 +57,8 @@ public abstract class ButtonDropTarget extends TextView
|
||||
public static final int TOOLTIP_LEFT = 1;
|
||||
public static final int TOOLTIP_RIGHT = 2;
|
||||
|
||||
private final Rect mTempRect = new Rect();
|
||||
|
||||
protected final Launcher mLauncher;
|
||||
|
||||
protected DropTargetBar mDropTargetBar;
|
||||
@@ -402,6 +404,21 @@ public abstract class ButtonDropTarget extends TextView
|
||||
secondLine));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns if the text will be clipped vertically within the provided availableHeight.
|
||||
*/
|
||||
private boolean isTextClippedVertically(int availableHeight) {
|
||||
availableHeight -= getPaddingTop() + getPaddingBottom();
|
||||
if (availableHeight <= 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
getPaint().getTextBounds(mText.toString(), 0, mText.length(), mTempRect);
|
||||
// Add bounds bottom to height, as text bounds height measures from the text baseline and
|
||||
// above, which characters can descend below
|
||||
return mTempRect.bottom + mTempRect.height() <= availableHeight;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reduce the size of the text until it fits the measured width or reaches a minimum.
|
||||
*
|
||||
@@ -423,7 +440,9 @@ public abstract class ButtonDropTarget extends TextView
|
||||
float textSize = Utilities.pxToSp(getTextSize());
|
||||
|
||||
int availableWidth = getMeasuredWidth();
|
||||
while (isTextTruncated(availableWidth)) {
|
||||
int availableHeight = getMeasuredHeight();
|
||||
|
||||
while (isTextTruncated(availableWidth) || isTextClippedVertically(availableHeight)) {
|
||||
textSize -= step;
|
||||
if (textSize < minSize) {
|
||||
textSize = minSize;
|
||||
|
||||
Reference in New Issue
Block a user