当颜色为白色时,警报对话框文本不可见



在我的应用程序主题中,主要颜色为白色。因此,警报对话框的文本颜色在Android N下方不可见。然后,我为alertdialog创建了一个自定义主题,但仍然不起作用。

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@android:color/transparent</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionModeOverlay">true</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item>
</style>

这是我的自定义警报对话框主题。我的对话框有数组适配器。

<style name="AlertDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="android:textColor">#000000</item>
<item name="android:textColorPrimary">#000000</item>
</style>

我按照代码使用了这个主题。

private void showAccountSettingsPopUp(){
AlertDialog.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
builder = new AlertDialog.Builder(this);
} else {
builder = new AlertDialog.Builder(this, R.style.AlertDialogTheme);
}
List<String> stringList = new ArrayList<>();
stringList.add(getString(R.string.blocked_list));
stringList.add(getString(R.string.edit_my_profile));
stringList.add(getString(R.string.delece_acc));
ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, stringList);
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
switch (i){
case 0:
startActivity(new Intent(SettingsActivity.this, BlockedUserActivity.class));
break;
case 1:
startActivity(new Intent(SettingsActivity.this, EditProfilActivity.class));
break;
case 2:
showTwoButtonAlert(getString(R.string.are_you_sure), getString(R.string.delete_acc_text), false);
break;
}
}
});
builder.show();
}

可以尝试为该活动的警报对话框定义的主题设置为 app:popupTheme 例如,在 XML 中

<LinearLayout
...
app:popupTheme="@style/AlertDialogTheme"
app:theme="@style/AppTheme"
...
/>

使用类似样式

<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">#FFCC00</item>
<item name="android:textColorPrimary">@color/theme_color_blue</item>
<item name="android:background">#FFF</item>
</style>

问题不在于主题。这与阵列适配器列表项有关。我创建了颜色为黑色的文本视图,并将其设置为阵列适配器列表项,如下所示。

我用这个,

ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplicationContext(), R.layout.textview_arrayadapter, stringList);

而不是

ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, stringList);

最新更新