The list does not follow the UX dialog design doc in alert dialog.

Please refer the comment#1 at bug and there are change below
- the divider is 4dp
- the item's radius is different in the list.

Bug: 216233391
Test: manual test: check the UI
make RunSettingsRoboTests ROBOTEST_FILTER=SimListDialogFragmentTest (PASS)

Change-Id: I758d60202fcf477aeb49014e60b949e7ad08c082
This commit is contained in:
SongFerngWang
2022-01-25 14:55:42 +08:00
parent 43ebe68063
commit f2a8008ae3
8 changed files with 50 additions and 45 deletions

View File

@@ -25,6 +25,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
@@ -115,13 +116,12 @@ public class ConfirmDialogFragment extends BaseDialogFragment
AlertDialog.Builder builder = new AlertDialog.Builder(getContext())
.setPositiveButton(posBtnString, this)
.setNegativeButton(negBtnString, this);
View content = LayoutInflater.from(getContext()).inflate(
R.layout.sim_confirm_dialog_multiple_enabled_profiles_supported, null);
if (list != null && !list.isEmpty()) {
if (list != null && !list.isEmpty() && content != null) {
Log.i(TAG, "list =" + list.toString());
View content = LayoutInflater.from(getContext()).inflate(
R.layout.sim_confirm_dialog_multiple_enabled_profiles_supported, null);
if (!TextUtils.isEmpty(title)) {
View titleView = LayoutInflater.from(getContext()).inflate(
R.layout.sim_confirm_dialog_title_multiple_enabled_profiles_supported,
@@ -133,6 +133,7 @@ public class ConfirmDialogFragment extends BaseDialogFragment
TextView dialogMessage = content.findViewById(R.id.msg);
if (!TextUtils.isEmpty(message) && dialogMessage != null) {
dialogMessage.setText(message);
dialogMessage.setVisibility(View.VISIBLE);
}
final ArrayAdapter<String> arrayAdapterItems = new ArrayAdapter<String>(
@@ -140,8 +141,8 @@ public class ConfirmDialogFragment extends BaseDialogFragment
R.layout.sim_confirm_dialog_item_multiple_enabled_profiles_supported, list);
final ListView lvItems = content.findViewById(R.id.carrier_list);
if (lvItems != null) {
lvItems.setVisibility(View.VISIBLE);
lvItems.setAdapter(arrayAdapterItems);
lvItems.setChoiceMode(ListView.CHOICE_MODE_NONE);
lvItems.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
@@ -158,6 +159,10 @@ public class ConfirmDialogFragment extends BaseDialogFragment
}
});
}
final LinearLayout infoOutline = content.findViewById(R.id.info_outline_layout);
if (infoOutline != null) {
infoOutline.setVisibility(View.VISIBLE);
}
builder.setView(content);
} else {
if (!TextUtils.isEmpty(title)) {

View File

@@ -26,8 +26,6 @@ import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -126,18 +124,10 @@ public class SelectSpecificDataSimDialogFragment extends SimDialogFragment imple
View content = LayoutInflater.from(getContext()).inflate(
R.layout.sim_confirm_dialog_multiple_enabled_profiles_supported, null);
TextView dialogMessage = content.findViewById(R.id.msg);
TextView dialogMessage = content != null ? content.findViewById(R.id.msg) : null;
if (!TextUtils.isEmpty(message) && dialogMessage != null) {
dialogMessage.setText(message);
}
final ListView lvItems = content.findViewById(R.id.carrier_list);
if (lvItems != null) {
lvItems.setVisibility(View.GONE);
}
final LinearLayout infoOutline = content.findViewById(R.id.info_outline_layout);
if (infoOutline != null) {
infoOutline.setVisibility(View.GONE);
dialogMessage.setVisibility(View.VISIBLE);
}
dialog.setView(content);

View File

@@ -19,7 +19,6 @@ package com.android.settings.sim;
import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
@@ -28,6 +27,7 @@ import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
@@ -47,12 +47,10 @@ import java.util.List;
* Shows a dialog consisting of a list of SIMs (aka subscriptions), possibly including an additional
* entry indicating "ask me every time".
*/
public class SimListDialogFragment extends SimDialogFragment implements
DialogInterface.OnClickListener {
public class SimListDialogFragment extends SimDialogFragment {
private static final String TAG = "SimListDialogFragment";
protected static final String KEY_INCLUDE_ASK_EVERY_TIME = "include_ask_every_time";
protected static final String KEY_SHOW_CANCEL_ITEM = "show_cancel_item";
private static final int LIST_VIEW_DIVIDER_LINE_WEIGHT = 2;
protected SelectSubscriptionAdapter mAdapter;
@VisibleForTesting
@@ -79,21 +77,35 @@ public class SimListDialogFragment extends SimDialogFragment implements
TextView titleTextView = titleView.findViewById(R.id.title);
titleTextView.setText(getContext().getString(getTitleResId()));
builder.setCustomTitle(titleTextView);
mAdapter = new SelectSubscriptionAdapter(builder.getContext(), mSubscriptions);
setAdapter(builder);
final AlertDialog dialog = builder.create();
ListView listView = dialog.getListView();
if (listView != null) {
listView.setDividerHeight(LIST_VIEW_DIVIDER_LINE_WEIGHT);
View content = LayoutInflater.from(getContext()).inflate(
R.layout.sim_confirm_dialog_multiple_enabled_profiles_supported, null);
final ListView lvItems = content != null ? content.findViewById(R.id.carrier_list) : null;
if (lvItems != null) {
setAdapter(lvItems);
lvItems.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
onClick(position);
}
});
}
dialog.setView(content);
updateDialog();
return dialog;
}
@Override
public void onClick(DialogInterface dialog, int selectionIndex) {
/**
* If the user click the item at the list, then it sends the callback.
* @param selectionIndex the index of item in the list.
*/
public void onClick(int selectionIndex) {
if (selectionIndex >= 0 && selectionIndex < mSubscriptions.size()) {
int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
final SubscriptionInfo subscription = mSubscriptions.get(selectionIndex);
@@ -143,14 +155,15 @@ public class SimListDialogFragment extends SimDialogFragment implements
if (currentSubscriptions.equals(mSubscriptions)) {
return;
}
mSubscriptions.clear();
mSubscriptions.addAll(currentSubscriptions);
mAdapter.notifyDataSetChanged();
}
@VisibleForTesting
void setAdapter(AlertDialog.Builder builder) {
builder.setAdapter(mAdapter, this);
void setAdapter(ListView lvItems) {
lvItems.setAdapter(mAdapter);
}
@Override