为了账号安全,请及时绑定邮箱和手机立即绑定

Android:如何创建没有标题的对话框?

Android:如何创建没有标题的对话框?

潇潇雨雨 2019-11-05 15:38:56
我正在尝试在Android中生成自定义对话框。我这样创建对话框:dialog = new Dialog(this);dialog.setContentView(R.layout.my_dialog);除了对话框的标题,一切都正常。即使我没有设置对话框的标题,对话框的弹出窗口在对话框的位置也会有一个空格。有什么办法可以隐藏对话框的这一部分吗?我用AlertDialog尝试过,但似乎布局设置不正确:LayoutInflater inflater =     (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View view = inflater.inflate(R.layout.map_dialog, null);AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setView(view);// dialog = new Dialog(this);// dialog.setContentView(R.layout.map_dialog);dialog = builder.create();((TextView) dialog.findViewById(R.id.nr)).setText(number);如果使用此代码,则在最后一行中将获得空的Pointer Exception。该对话框不为null,因此我尝试检索的TextView不存在。如果取消注释使用“对话框构造器”的部分,则一切正常,但对话框布局上方的标题除外。
查看完整描述

3 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

从头开始创建对话框时,FEATURE_NO_TITLE可以工作,如下所示:


Dialog dialog = new Dialog(context);

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

但是在创建AlertDialog(或使用Builder)时它不起作用,因为它已禁用标题并在内部使用自定义标题。


我看过SDK的来源,但我认为它无法解决。因此,要删除顶部间距,唯一的解决方案是直接使用Dialog类从头开始创建IMO自定义对话框。


同样,可以使用一种样式来做到这一点,例如在styles.xml中:


<style name="FullHeightDialog" parent="android:style/Theme.Dialog">

   <item name="android:windowNoTitle">true</item>

</style>

接着:


Dialog dialog = new Dialog(context, R.style.FullHeightDialog);


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 414 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信