Fix drop target icons being truncated.

The icons were being truncated due to incorrect viewport width/height
values for the vector drawable.

Test: manual
Bug: 187036287
Change-Id: Ie2d0ffe815501d2e943146a79cb4ede379ce0ecf
This commit is contained in:
Yogisha Dixit 2021-06-08 21:19:15 +01:00
parent 1560f401ae
commit ed052ab212
3 changed files with 16 additions and 15 deletions

View File

@ -16,8 +16,8 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportHeight="20.0"
android:viewportWidth="20.0"
android:viewportHeight="24.0"
android:viewportWidth="24.0"
android:tint="?android:attr/textColorPrimary">
<path
android:fillColor="@android:color/white"

View File

@ -16,8 +16,8 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20.0"
android:viewportHeight="20.0"
android:viewportWidth="24.0"
android:viewportHeight="24.0"
android:tint="?android:attr/textColorPrimary" >
<path
android:fillColor="@android:color/white"

View File

@ -36,8 +36,6 @@ import android.view.accessibility.AccessibilityEvent;
import android.widget.PopupWindow;
import android.widget.TextView;
import androidx.appcompat.content.res.AppCompatResources;
import com.android.launcher3.anim.Interpolators;
import com.android.launcher3.dragndrop.DragController;
import com.android.launcher3.dragndrop.DragLayer;
@ -82,6 +80,8 @@ public abstract class ButtonDropTarget extends TextView
private boolean mAccessibleDrag;
/** An item must be dragged at least this many pixels before this drop target is enabled. */
private final int mDragDistanceThreshold;
/** The size of the drawable shown in the drop target. */
private final int mDrawableSize;
protected CharSequence mText;
protected ColorStateList mOriginalTextColor;
@ -103,6 +103,7 @@ public abstract class ButtonDropTarget extends TextView
Resources resources = getResources();
mDragDistanceThreshold = resources.getDimensionPixelSize(R.dimen.drag_distanceThreshold);
mDrawableSize = resources.getDimensionPixelSize(R.dimen.drop_target_text_size);
}
@Override
@ -120,14 +121,18 @@ public abstract class ButtonDropTarget extends TextView
}
protected void setDrawable(int resId) {
mDrawable = getContext().getDrawable(resId).mutate();
mDrawable.setBounds(0, 0, mDrawableSize, mDrawableSize);
setDrawable(mDrawable);
}
private void setDrawable(Drawable drawable) {
// We do not set the drawable in the xml as that inflates two drawables corresponding to
// drawableLeft and drawableStart.
if (mTextVisible) {
setCompoundDrawablesRelativeWithIntrinsicBounds(resId, 0, 0, 0);
mDrawable = getCompoundDrawablesRelative()[0];
setCompoundDrawablesRelative(drawable, null, null, null);
} else {
setCompoundDrawablesRelativeWithIntrinsicBounds(0, resId, 0, 0);
mDrawable = getCompoundDrawablesRelative()[1];
setCompoundDrawablesRelative(null, drawable, null, null);
}
}
@ -329,11 +334,7 @@ public abstract class ButtonDropTarget extends TextView
if (mTextVisible != isVisible || !TextUtils.equals(newText, getText())) {
mTextVisible = isVisible;
setText(newText);
if (mTextVisible) {
setCompoundDrawablesRelativeWithIntrinsicBounds(mDrawable, null, null, null);
} else {
setCompoundDrawablesRelativeWithIntrinsicBounds(null, mDrawable, null, null);
}
setDrawable(mDrawable);
}
}