ich mit einer benutzerdefinierten Ansicht in einem Dialog ein Problem habe auf Android API 10.Android Alertdialog produziert schwarzen Text mit schwarzem Hintergrund
ich AlertDialog.Builder
benutze meinen Dialog zu konstruieren. Ich schließe ein benutzerdefiniertes Ansichtsfenster mit dem Befehl setView
für den Builder ein.
Dies funktioniert auf den meisten APIs, mit denen ich getestet habe. Der Stil ändert sich etwas von Gerät zu Gerät, aber das ist es, was ich möchte, damit der Stil dem Geräte-Standard entspricht.
Mein Problem ist, dass auf API 10 jeder Text, der in meiner benutzerdefinierten Ansicht ist, schwarz auf schwarzem Hintergrund angezeigt wird.
Jeder Text, den ich mit AlertDialog.Builder.setMessage()
einfüge, wird korrekt angezeigt.
Welches magische Attribut/Stil verwendet der Dialoggenerator, um die Textdarstellung zu bestimmen?
Das Thema meiner App ist Theme.AppCompat.Light
.
Hier ist meine onCreateDialog Methode:
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = getActivity().getLayoutInflater();
final View view = inflater.inflate(R.layout.fragment_status_dialog, null);
mStatusTextView = (TextView) view.findViewById(R.id.text_status);
mConnectedDeviceTextView = (TextView) view.findViewById(R.id.text_connected_device);
MainService.ServiceState state = null;
if (getArguments().containsKey(SERVICE_STATUS_ARG_KEY)) {
state = (MainService.ServiceState) getArguments().getSerializable(SERVICE_STATUS_ARG_KEY);
}
setState(state);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(view);
builder.setMessage("This will show up just fine.");
builder.setTitle(getString(R.string.status_title));
builder.setNegativeButton(R.string.dialog_back_button_text, null);
builder.setNeutralButton(R.string.dialog_connect_to_text, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mListener.onDialogConnectTo();
}
});
// Create the AlertDialog object and return it
return builder.create();
}
Hier ist mein fragment_status_dialog Layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="18dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/status_starting"
android:id="@+id/text_status"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/status_connected_to_unknown"
android:paddingStart="4dp"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:id="@+id/text_connected_device"
android:layout_toRightOf="@+id/text_status"
android:layout_toEndOf="@+id/text_status"/>
</RelativeLayout>
Hinweis, habe ich versucht, https://stackoverflow.com/a/24505312/2350083 aber es hat fix es nicht.
Versuchen Sie, 'AlertDialog # setInverseBackgroundForced (true)' aufzurufen. –
Alex, diese Lösung scheint für mich zu funktionieren! Vielen Dank! Ich habe es bisher auf Geräten mit API getestet 10,13,15,19 – Jon
Froh, es zu hören! Ich habe es als Antwort hinzugefügt. –