我在使用 AlertDialog 和我的自定义主题时遇到了麻烦。我有 2 个这样定义的主题 Black 和 Light
<style name="AppThemeBlack" parent="android:Theme.Black">
...................
</style>
<style name="AppThemeLight" parent="android:Theme.Light">
...................
</style>
我有根据喜好应用主题的基本活动
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
Util.SetTheme(this, Config.getInstance().getUITheme());
super.onCreate(savedInstanceState);
}
}
.............................
private static int GetThemeIdByName(String themeName)
{
if (themeName.equals("AppThemeLight"))
return R.style.AppThemeLight;
else if (themeName.equals("AppThemeBlack"))
return R.style.AppThemeBlack;
return R.style.AppThemeLight;
}
public static void SetTheme(Context context, String themeName)
{
int id = GetThemeIdByName(themeName);
context.setTheme(id);
}
从这个 BaseActivity 继承的所有活动。所以我的主题适用于应用程序中的每个活动。但是AlertDialog有问题默认在AndroidManifest定义的Light主题中
<application android:theme="@style/AppThemeLight" >
我像这样创建 AlertDialog
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
ObjectListAdapter<TPartnerSimple> adapter = new ObjectListAdapter<TPartnerSimple>(this, list);
dlg.setAdapter(adapter, new DialogInterface.OnClickListener(){....});
dlg.show();
此适配器使用项目布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/txtName_ObjectListItem"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="10dp"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:text="Position 1"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
当应用程序使用以白色背景和黑色文本显示的浅色主题列表时。但是,如果我应用黑色主题,它会以白色背景和白色文本(如 BlackTheme 中定义)显示列表,所以我看不到项目文本
为什么对话框使用黑色主题中定义的白色文本而不使用那里定义的黑色背景?如何将对话框的背景更改为黑色以使用主题查看项目文本?