From b0b8ca7e1c43bdda74084ef1d3e2b40f82fc86f7 Mon Sep 17 00:00:00 2001 From: Sunny Shao Date: Tue, 18 Apr 2023 16:35:46 +0800 Subject: [PATCH] Fix RTL display problem in Open by default - setTextDirection for ListView ih the verified links dialog. - setCompoundDrawables for TextView in the supported link dialog. Fixes: 277082703 Fixes: 277084378 Test: manual review Change-Id: Ib42ed2f04785a5f1803b9d2d95055e4208c9e88f --- res/layout/supported_links_dialog_item.xml | 1 + .../applications/intentpicker/AppLaunchSettings.java | 8 +++++++- .../intentpicker/SupportedLinksAdapter.java | 11 +++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/res/layout/supported_links_dialog_item.xml b/res/layout/supported_links_dialog_item.xml index bbd2857dafd..8a18935d5c1 100644 --- a/res/layout/supported_links_dialog_item.xml +++ b/res/layout/supported_links_dialog_item.xml @@ -19,6 +19,7 @@ android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" + android:textDirection="locale" android:minHeight="?android:attr/listPreferredItemHeightSmall" android:ellipsize="marquee" android:gravity="center_vertical" diff --git a/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java b/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java index b1ab1cc51bf..cc662aad2e9 100644 --- a/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java +++ b/src/com/android/settings/applications/intentpicker/AppLaunchSettings.java @@ -281,12 +281,18 @@ public class AppLaunchSettings extends AppInfoBase implements final List verifiedLinksList = IntentPickerUtils.getLinksList( mDomainVerificationManager, mPackageName, DOMAIN_STATE_VERIFIED); - return new AlertDialog.Builder(mContext) + AlertDialog dialog = new AlertDialog.Builder(mContext) .setCustomTitle(titleView) .setCancelable(true) .setItems(verifiedLinksList.toArray(new String[0]), /* listener= */ null) .setPositiveButton(R.string.app_launch_dialog_ok, /* listener= */ null) .create(); + if (dialog.getListView() != null) { + dialog.getListView().setTextDirection(View.TEXT_DIRECTION_LOCALE); + } else { + Log.w(TAG, "createVerifiedLinksDialog: dialog.getListView() is null, please check it."); + } + return dialog; } @VisibleForTesting diff --git a/src/com/android/settings/applications/intentpicker/SupportedLinksAdapter.java b/src/com/android/settings/applications/intentpicker/SupportedLinksAdapter.java index 9288d52c504..07169718e35 100644 --- a/src/com/android/settings/applications/intentpicker/SupportedLinksAdapter.java +++ b/src/com/android/settings/applications/intentpicker/SupportedLinksAdapter.java @@ -17,6 +17,8 @@ package com.android.settings.applications.intentpicker; import android.content.Context; +import android.graphics.drawable.Drawable; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -29,6 +31,7 @@ import java.util.List; /** This adapter is for supported links dialog. */ public class SupportedLinksAdapter extends BaseAdapter { + private static final String TAG = "SupportedLinksAdapter"; private final Context mContext; private final List mWrapperList; @@ -62,6 +65,14 @@ public class SupportedLinksAdapter extends BaseAdapter { R.layout.supported_links_dialog_item, /* root= */ null); } final CheckedTextView textView = convertView.findViewById(android.R.id.text1); + Drawable[] drawables = textView.getCompoundDrawables(); + if (mContext.getResources().getConfiguration().getLayoutDirection() + == View.LAYOUT_DIRECTION_RTL && drawables[0] != null) { + Log.d(TAG, "getView: RTL direction."); + // Set a checkbox position. It is same as the android:drawableRight attribute. + textView.setCompoundDrawables(/* left= */ null, /* top= */ null, drawables[0], + /* bottom= */ null); + } textView.setText(mWrapperList.get(position).getDisplayTitle(mContext)); textView.setEnabled(mWrapperList.get(position).isEnabled()); textView.setChecked(mWrapperList.get(position).isChecked());