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
This commit is contained in:
Sunny Shao
2023-04-18 16:35:46 +08:00
parent e346dc6779
commit b0b8ca7e1c
3 changed files with 19 additions and 1 deletions

View File

@@ -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"

View File

@@ -281,12 +281,18 @@ public class AppLaunchSettings extends AppInfoBase implements
final List<String> 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

View File

@@ -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<SupportedLinkWrapper> 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());