mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-28 15:56:49 +00:00
Make the text for the drop target buttons fit if it's too long.
The text "Don't suggest app" is too long when the device language is GE or JA, or if you make the text bigger in settings. Before truncating the text completely we are going to try to make the text smaller until it gets to a predefined value (button_drop_target_min_text_size). Test: Change the language to German (Deutch) and install a new app and drag it to the workspace to see the button "App nicht vorschlagen" Test: Also, a nice way to test is to go to SecondaryDropTarget#setupUi and hardcode the option to always show "Don't suggest app" Fix: 221480721 Change-Id: I99def4e23cd17109a297aecaa620cef7a0d137e7
This commit is contained in:
committed by
Sebastián Franco
parent
b9879a0b85
commit
d2d8e97a65
@@ -140,7 +140,7 @@ public abstract class ButtonDropTarget extends TextView
|
||||
y = -getMeasuredHeight();
|
||||
message.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
|
||||
if (mToolTipLocation == TOOLTIP_LEFT) {
|
||||
x = - getMeasuredWidth() - message.getMeasuredWidth() / 2;
|
||||
x = -getMeasuredWidth() - message.getMeasuredWidth() / 2;
|
||||
} else {
|
||||
x = getMeasuredWidth() / 2 + message.getMeasuredWidth() / 2;
|
||||
}
|
||||
@@ -324,6 +324,40 @@ public abstract class ButtonDropTarget extends TextView
|
||||
hideTooltip();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reduce the size of the text until it fits or reaches a minimum.
|
||||
*
|
||||
* The minimum size is defined by {@code R.dimen.button_drop_target_min_text_size} and
|
||||
* it diminishes by intervals defined by
|
||||
* {@code R.dimen.button_drop_target_resize_text_increment}
|
||||
* This functionality is very similar to the option
|
||||
* {@link TextView#setAutoSizeTextTypeWithDefaults(int)} but can't be used in this view because
|
||||
* the layout width is {@code WRAP_CONTENT}.
|
||||
*
|
||||
* @param availableWidth Available width in the button to fit the text, used in
|
||||
* {@code ButtonDropTarget#isTextTruncated(int)}
|
||||
* @return The biggest text size in SP that makes the text fit or if the text can't fit returns
|
||||
* the min available value
|
||||
*/
|
||||
public float resizeTextToFit(int availableWidth) {
|
||||
float minSize = Utilities.pxToSp(getResources()
|
||||
.getDimensionPixelSize(R.dimen.button_drop_target_min_text_size));
|
||||
float step = Utilities.pxToSp(getResources()
|
||||
.getDimensionPixelSize(R.dimen.button_drop_target_resize_text_increment));
|
||||
float textSize = Utilities.pxToSp(getTextSize());
|
||||
|
||||
while (textSize > minSize) {
|
||||
if (isTextTruncated(availableWidth)) {
|
||||
textSize -= step;
|
||||
setTextSize(textSize);
|
||||
} else {
|
||||
return textSize;
|
||||
}
|
||||
}
|
||||
return minSize;
|
||||
}
|
||||
|
||||
public boolean isTextTruncated(int availableWidth) {
|
||||
availableWidth -= (getPaddingLeft() + getPaddingRight() + mDrawable.getIntrinsicWidth()
|
||||
+ getCompoundDrawablePadding());
|
||||
|
||||
Reference in New Issue
Block a user