Fix the gradient drawable orientation is not mirrored for RTL alignment
Root cause: The orientation of the gradient drawable follows the view alignment. It should consider the text alignment.
Solution: Use getLayoutDirectionFromLocale# to get the text alignment to
set the correct orientation of the gradient drawable.
Bug: 278950655
Test: Manual test for RTL and LTR language
Change-Id: If94af75172ace137ac5168763f4cb47951f9e943
Merged-In: If94af75172ace137ac5168763f4cb47951f9e943
(cherry picked from commit 95fbb04106
)
This commit is contained in:
@@ -34,6 +34,7 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
import androidx.annotation.ColorInt;
|
import androidx.annotation.ColorInt;
|
||||||
import androidx.annotation.IntDef;
|
import androidx.annotation.IntDef;
|
||||||
|
import androidx.core.text.TextUtilsCompat;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceViewHolder;
|
import androidx.preference.PreferenceViewHolder;
|
||||||
|
|
||||||
@@ -49,6 +50,7 @@ import java.util.Arrays;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/** Preference that easier preview by matching name to color. */
|
/** Preference that easier preview by matching name to color. */
|
||||||
@@ -156,10 +158,11 @@ public final class PaletteListPreference extends Preference {
|
|||||||
mGradientColors.set(Position.END, color);
|
mGradientColors.set(Position.END, color);
|
||||||
|
|
||||||
final GradientDrawable gradientDrawable = new GradientDrawable();
|
final GradientDrawable gradientDrawable = new GradientDrawable();
|
||||||
|
final Locale locale = Locale.getDefault();
|
||||||
final Orientation orientation =
|
final Orientation orientation =
|
||||||
rootView.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL
|
TextUtilsCompat.getLayoutDirectionFromLocale(locale) == View.LAYOUT_DIRECTION_RTL
|
||||||
? Orientation.RIGHT_LEFT
|
? Orientation.RIGHT_LEFT
|
||||||
: Orientation.LEFT_RIGHT;
|
: Orientation.LEFT_RIGHT;
|
||||||
gradientDrawable.setOrientation(orientation);
|
gradientDrawable.setOrientation(orientation);
|
||||||
gradientDrawable.setColors(Ints.toArray(mGradientColors), Floats.toArray(mGradientOffsets));
|
gradientDrawable.setColors(Ints.toArray(mGradientColors), Floats.toArray(mGradientOffsets));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user