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
Merged-In: I758d60202fcf477aeb49014e60b949e7ad08c082
This commit is contained in:
SongFerngWang
2022-01-25 14:55:42 +08:00
parent f513452d4b
commit f88ffb09fd
8 changed files with 50 additions and 45 deletions

View File

@@ -20,7 +20,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/listPreferredItemHeightSmall"
android:background="@drawable/sim_confirm_dialog_rounded_bg"
android:gravity="center">
<TextView android:id="@+id/title"
android:textAppearance="@style/TextAppearance.SimConfirmDialogList"

View File

@@ -25,6 +25,5 @@
android:paddingBottom="?attr/listPreferredItemPaddingEnd"
android:paddingLeft="?attr/listPreferredItemPaddingLeft"
android:paddingRight="?attr/listPreferredItemPaddingRight"
android:background="@drawable/sim_confirm_dialog_rounded_bg"
android:textAppearance="@style/TextAppearance.SimConfirmDialogList"
/>

View File

@@ -26,15 +26,19 @@
android:paddingEnd="24dp"
android:paddingTop="16dp"
android:paddingStart="24dp"
android:paddingBottom="32dp"
android:gravity="center"
android:textAppearance="@style/TextAppearance.DialogMessage"/>
android:textAppearance="@style/TextAppearance.DialogMessage"
android:visibility="gone"/>
<ListView
android:id="@+id/carrier_list"
android:layout_gravity="center"
android:paddingTop="16dp"
android:dividerHeight="1dp"
android:divider="?android:attr/colorBackgroundFloating"
android:dividerHeight="4dp"
android:background="@drawable/sim_confirm_dialog_rounded_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/info_outline_layout"
@@ -46,7 +50,8 @@
android:paddingTop="16dp"
android:paddingStart="24dp"
android:layout_marginBottom="16dp"
android:baselineAligned="true">
android:baselineAligned="true"
android:visibility="gone">
<ImageView
android:src="@drawable/ic_info_outline_24dp"
android:layout_width="wrap_content"

View File

@@ -34,12 +34,6 @@
<item name="android:colorBackground">@*android:color/surface_dark</item>
</style>
<style name="Theme.AlertDialog.Base.Material3" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
<item name="colorPrimary">@*android:color/primary_device_default_settings</item>
<item name="colorAccent">@*android:color/accent_device_default_dark</item>
<item name="android:colorBackground">@*android:color/surface_dark</item>
</style>
<!-- Material theme for the pages containing TabLayout and ViewPager -->
<style name="Theme.TabTheme" parent="@style/Theme.MaterialComponents.DayNight">
<item name="colorPrimary">@*android:color/edge_effect_device_default_dark</item>

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

View File

@@ -77,7 +77,7 @@ public class SimListDialogFragmentTest extends SimDialogFragmentTestBase<SimList
doReturn(activity).when(mFragment).getActivity();
doNothing().when(activity).onSubscriptionSelected(anyInt(), anyInt());
mFragment.onClick(alertDialog, 1);
mFragment.onClick(1);
verify(activity).onSubscriptionSelected(dialogType, SIM2_ID);
}
@@ -117,7 +117,7 @@ public class SimListDialogFragmentTest extends SimDialogFragmentTestBase<SimList
doReturn(activity).when(mFragment).getActivity();
doNothing().when(activity).onSubscriptionSelected(anyInt(), anyInt());
mFragment.onClick(alertDialog, 0);
mFragment.onClick(0);
verify(activity).onSubscriptionSelected(dialogType,
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
}