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:
@@ -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"
|
||||
|
@@ -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"
|
||||
/>
|
||||
|
@@ -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"
|
||||
|
@@ -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>
|
||||
|
@@ -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)) {
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user