Ryan Newman
Ryan Newman

Reputation: 856

Dialog.setTitle not showing a title

I am trying to add a custom title to my Dialog, however whenever I run my application it doesn't show a title.

My code for creating the dialog is

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

And my layout file is

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

And here is what I am getting

Here is what I am getting

Is there something I am missing?

Upvotes: 16

Views: 28565

Answers (4)

Raafat Alhmidi
Raafat Alhmidi

Reputation: 1176

you should define your style like this:

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

and then pass this style to the constructor of the Dialog

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

Upvotes: 31

SriMaharshi Manchem
SriMaharshi Manchem

Reputation: 534

You can try this method as well and get different view styles based upon theme used.

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

In Dialog constructor

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

Use @style/Theme.Appcompat.Light.Dialog for your project.

Upvotes: 5

OneCricketeer
OneCricketeer

Reputation: 191844

Like the other answer, but more concise

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

Upvotes: 9

Valentin Kuhn
Valentin Kuhn

Reputation: 856

You should use an AlertDialog.Builder instead of just creating a Dialog:

// 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();

See here for the Android Developers Guide on Dialogs.

Upvotes: 2

Related Questions