web-dev-qa-db-ja.com

Dialog.setTitleにタイトルが表示されない

ダイアログにカスタムタイトルを追加しようとしていますが、アプリケーションを実行するたびにタイトルが表示されません。

ダイアログを作成するための私のコードは

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

そして、私のレイアウトファイルは

<?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"/>

そして、これは私が得ているものです

Here is what I am getting

不足しているものはありますか?

13
Ryan Newman

次のようにスタイルを定義する必要があります。

 <style name="Dialog" parent="Theme.AppCompat.Dialog">
    <item name="Android:windowNoTitle">false</item>
    <item name="Android:windowIsFloating">true</item>
</style>

そして、このスタイルをDialogのコンストラクタに渡します

final Dialog passwordDialog = new Dialog(this,R.style.Dialog);
25

他の答えと同様ですが、より簡潔です

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();
    }
});
8
cricket_007

この方法も試して、使用するテーマに基づいてさまざまな表示スタイルを取得できます。

<style name="FilterDialogTheme" parent="@Android:style/Theme.Holo.Light.Dialog">
    <item name="Android:windowNoTitle">false</item>
</style>

Dialogコンストラクター

  public FilterDialog(Context context) {
        super(context, R.style.FilterDialogTheme);
    }

使用する @style/Theme.Appcompat.Light.Dialogプロジェクト用。

5

単にDialogを作成するのではなく、AlertDialog.Builderを使用する必要があります。

// 1. Instantiate an AlertDialog.Builder with its constructor
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

// 2. Chain together various setter methods to set the dialog characteristics
builder.setView(R.layout.admin_password_dialog);
builder.setTitle("Enter An Administrative Password");

// 3. Get the AlertDialog from create()
AlertDialog dialog = builder.create();
dialog.show();

Androidダイアログに関する開発者ガイド)については、 こちら を参照してください。

2
Valentin Kuhn