我正在尝试使用新的 AppCompat 22.1
功能 AppCompatDialog
,但它显示没有标题的对话框,但我正在使用方法 setTitle
。如果我将 AppCompatDialog
更改为 Dialog
一切正常。这是 AppCompatDialog
中的错误?
这是我的对话代码:
final AppCompatDialog dialog = new AppCompatDialog(ctx);
dialog.setTitle(R.string.choose_mode);
dialog.setContentView(R.layout.dialog_with_list);
ListView listView = (ListView) dialog.findViewById(R.id.list_view);
List<ModeItemModel> modesList = new ArrayList<ModeItemModel>();
modesList.add(new ModeItemModel(GUI_MANUAL));
modesList.add(new ModeItemModel(GUI_GPS));
listView.setAdapter(new ModeItemsAdapter(ctx, R.layout.list_item_ico_with_text, modesList));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
//Do Action
dialog.cancel();
}
});
dialog.setCancelable(true);
dialog.show();
最佳答案
正如@Eddwhis 在 <item name="windowNoTitle">true</item>
上方的评论中指出的那样在 Theme 中还隐藏了对话框的标题。
我通过添加自定义 AppCompatDialgStyle 来修复它,我在其中设置了 <item name="windowNoTitle">false</item>
为假。
基本主题:
<style name="Theme.App.Base" parent="Theme.AppCompat.Light.DarkActionBar,">
...
<item name="alertDialogTheme">@style/Theme.App.AppCompatDialogStyle</item>
<item name="dialogTheme">@style/Theme.App.AppCompatDialogStyle</item>
</style>
NoActionBar 主题:
<style name="Theme.App.NoActionBar" parent="@style/Theme.App.Base">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
我的对话框风格:
<style name="Theme.App.AppCompatDialogStyle" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">#f00</item>
<item name="android:textColorPrimary">@color/black</item>
<item name="android:background">@color/red</item>
<item name="windowNoTitle">false</item> <!-- that's the important bit -->
</style>
关于android - setTitle 到 AppCompatDialog 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29893221/