Sto avendo un problema con una visualizzazione personalizzata in una finestra sul API Android 10.Android AlertDialog produce testo nero con sfondo nero
Io uso AlertDialog.Builder
di costruire la mia finestra. Includo un pannello di visualizzazione personalizzato utilizzando il comando setView
sul builder.
Questo funziona sulla maggior parte delle API che ho testato con. Lo stile cambia un po 'da dispositivo a dispositivo, ma è quello che voglio, perché lo stile corrisponda al valore predefinito del dispositivo.
Il mio problema è che su API 10, qualsiasi testo nella mia vista personalizzata si presenta nero su sfondo nero.
Qualsiasi testo inserito utilizzando AlertDialog.Builder.setMessage()
viene visualizzato correttamente.
Quale attributo/stile magico viene utilizzato dal generatore di finestre di dialogo per determinare l'aspetto del testo?
Il tema della mia app è Theme.AppCompat.Light
.
Ecco il mio metodo onCreateDialog:
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();
}
Ecco il mio layout fragment_status_dialog
<?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>
nota, ho provato https://stackoverflow.com/a/24505312/2350083 ma non risolvere il problema.
Provare a chiamare 'AlertDialog # setInverseBackgroundForced (true)'. –
Alex, questa soluzione sembra funzionare per me! Grazie! L'ho provato finora sui dispositivi che usano l'API 10,13,15,19 – Jon
Felice di sentirlo! L'ho aggiunto come risposta. –