Dialog.setTitle没有显示标题

Rya*_*man 13 android customdialog

我正在尝试为我的Dialog添加一个自定义标题,但是每当我运行我的应用程序时它都没有显示标题.

我创建对话框的代码是

 final Dialog passwordDialog = new Dialog(this);
 passwordDialog.setContentView(R.layout.admin_password_dialog);
 passwordDialog.setTitle("Enter An Administrative Password");
 passwordDialog.show();
Run Code Online (Sandbox Code Playgroud)

我的布局文件是

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

<Button
    android:id="@+id/btn_confirmPassword"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/edit_adminPassword"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:text="@string/confirmPassword"/>

<EditText
    android:id="@+id/edit_adminPassword"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:ems="10"
    android:inputType="textPassword"/>
Run Code Online (Sandbox Code Playgroud)

这就是我得到的

这是我得到的

有什么我想念的吗?

小智 25

你应该像这样定义你的风格:

 <style name="Dialog" parent="Theme.AppCompat.Dialog">
    <item name="android:windowNoTitle">false</item>
    <item name="android:windowIsFloating">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后将此样式传递给Dialog的构造函数

final Dialog passwordDialog = new Dialog(this,R.style.Dialog);
Run Code Online (Sandbox Code Playgroud)

  • 这被称为解决方案,建议使用`AlertDialogue`而不是对话不是解决方案,它可能是一个解决方法... (3认同)
  • 为什么使用Android开发使我想把头撞在桌子上。 (2认同)

cri*_*007 9

像其他答案一样,但更简洁

final AlertDialog diag = new AlertDialog.Builder(this)
        .setTitle("Enter An Administrative Password")
        .setView(R.layout.admin_password_dialog)
        .create();

diag.show();

Button diagButton = (Button) diag.findViewById(R.id.btn_confirmPassword);
diagButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // handle button click
        EditText input = (EditText) diag.findViewById(R.id.edit_adminPassword);
        String s = input.getText().toString();
    }
});
Run Code Online (Sandbox Code Playgroud)

  • @RyanNewman-您可以使用`android.support.v7.app.AlertDialog`。如果您看一下我的回答,它也更具包容性,例如如何从对话框中获取Button和EditText。 (2认同)

Sri*_*hem 5

您也可以尝试此方法,并根据使用的主题获得不同的视图样式。

<style name="FilterDialogTheme" parent="@android:style/Theme.Holo.Light.Dialog">
    <item name="android:windowNoTitle">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)

在Dialog构造函数中

  public FilterDialog(Context context) {
        super(context, R.style.FilterDialogTheme);
    }
Run Code Online (Sandbox Code Playgroud)

使用@style/Theme.Appcompat.Light.Dialog为您的项目。