Ich habe einen ziemlich einfachen Dialog mit einem ArrayAdapter
innerhalb. Der Adapter bläht das folgende Layout:Android Switch-Widget in AlertDialog, nicht zeigen Daumenbild (on/off statt)
<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>
Wenn ich diesen Dialog zeigen, das ist, was ich bekommen:
Beachten Sie die Worte "on" und "off" in kleinen Buchstaben. Keine benutzerdefinierten Grafiken oder Klassen hier, nur Out-of-the-Box.
Wenn ich dies in einer Activity
mache, bekomme ich das nicht. Stattdessen habe ich das normale Daumen Bild, das ist genau das, was ich will:
Auch wenn ich die Größe des Switch wachsen macht es keinen Unterschied machen. Es macht nur die Reihen der Liste größer.
Hier ist der Code, um den Dialog zu bauen und zeigen:
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();
Die CalendarListAdapter
ist ein einfaches ArrayAdapter
: obwohl
public class CalendarListAdapter extends ArrayAdapter<Calendar> {
Es gibt keinen Unterschied zwischen der Activity
Version und der AlertDialog
Version für diese Klasse .
Ich bin verwirrt. Was ich hier mache ist nicht sehr kompliziert. Bitte helfen Sie.
Nun, ich denke nicht, dass dies eine Antwort auf die Frage ist, die ich stellte. Was ist, warum sieht der Switch anders aus, wenn er sich in einem AlertDialog befindet und wenn er sich in einer Aktivität befindet? – Emmanuel
Ich könnte dies als Workaround verwenden, wenn nichts anderes funktioniert. – Emmanuel
@Emmanuel verwenden Sie die 'support library' Version von' AlertDialog'?Ich denke, es liegt daran, 'drawable' in der' library' zu verfälschen. –