【发布时间】:2017-10-26 23:38:37
【问题描述】:
我有一个相当简单的对话框,里面有一个ArrayAdapter。适配器膨胀以下布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<TextView
android:id="@+id/txt_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_toStartOf="@+id/calendar_selection_switch"
android:ellipsize="end"
android:text="test test"
android:textColor="@color/black"
android:textSize="20sp" />
<Switch
android:id="@id/calendar_selection_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_gravity="end|center_vertical"
android:layout_marginStart="10dp"
android:minHeight="40dp"
android:minWidth="80dp" />
</RelativeLayout>
当我显示这个对话框时,这就是我得到的:
注意小写字母中的“开”和“关”。这里没有自定义图形或类,开箱即用。
当我在Activity 中这样做时,我不明白。相反,我得到了正常的拇指图像,这正是我想要的:
即使我扩大 Switch 的尺寸,也没有任何区别。它只是使列表的行更大。
这是构建和显示对话框的代码:
AlertDialog.Builder builderSingle = new AlertDialog.Builder(this);
builderSingle.setTitle(R.string.cal_title);
builderSingle.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
final CalendarListAdapter cla = new CalendarListAdapter(this, calendarList, null);
builderSingle.setAdapter(cla, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
cla.toggleSelect(which);
}
});
builderSingle.setPositiveButton(R.string.save, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (saveCalendars(cla)) {
dialog.dismiss();
}
}
});
AlertDialog dialog = builderSingle.create();
dialog.show();
CalendarListAdapter 是一个简单的ArrayAdapter:
public class CalendarListAdapter extends ArrayAdapter<Calendar> {
不过,Activity 版本和 AlertDialog 版本对于此类没有区别。
我很困惑。我在这里所做的并不是很复杂。请帮忙。
【问题讨论】:
标签: android android-alertdialog uiswitch