How can i add title to this custom dialog??
I have tried like this
public void customDialog()
{
Dialog dialog=new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
dialog.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.string.app_name );
dialog.setContentView(R.layout.dialog_submit);
TextView edit_model=(TextView) dialog.findViewById(R.id.edit_model);
edit_model.setText(android.os.Build.DEVICE);
dialog.show();
}//end of custom dialog function
I have tried to set title like this too..dialog.setTitle("Enter Details");
but this too didn't yielded any result. So how can i set title to this custom dialog??
This is my dialog_submit.xml file used for the custom dialog.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
>
<TextView android:id="@+id/txt_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFF"
android:text="Name"
android:textStyle="bold"
/>
<EditText android:id="@+id/edit_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_name"
/>
<TextView android:id="@+id/txt_model"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFF"
android:layout_below="@+id/edit_name"
android:text="Phone Model"
/>
<TextView android:id="@+id/edit_model"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_model"
/>
<Button android:id="@+id/but_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/edit_model"
开发者_如何学Python android:text="Cancel"
/>
<Button android:id="@+id/but_submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/edit_model"
android:layout_toRightOf="@+id/but_cancel"
android:text="Submit"
/>
</RelativeLayout>
Using some of your snippet:
public void customDialog() {
Dialog dialog=new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
dialog.setContentView(R.layout.dialog_submit);
dialog.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);
dialog.show();
}
res/layout/custom_title.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a custom title"/>
Did you try?
dialog.setTitle(R.string.app_name);
Using your layout definition and this piece of code:
public void customDialog() { Dialog dialog = new Dialog( this ); dialog.setContentView( R.layout.dialog_submit ); TextView edit_model = (TextView) dialog.findViewById( R.id.edit_model ); edit_model.setText( android.os.Build.DEVICE ); dialog.setTitle( "Enter Details" ); dialog.show( ); }
I get this dialog:
So, you might want to try dialog.setTitle( "Enter Details" ) again.
I used the emulator running Android 2.1.
What you might try, if you still need an answer to this, is an AlertDialog.Builder
Object. In this Object you can also call the setMessage("Title")
method, which will set the title in the Dialog
you eventually create with this. Moreover, you can also specify a positiveButton
, neutralButton
and a negativeButton
(let's say "Add", "Ok" and "Cancel" in that order, though you can specify your own text).
I believe the problem lies in that when you call Dialog dialog = new Dialog(this)
the onCreateDialog(int id)
is called. But here's the catch: this method is called once and delivers a Dialog
which is reused whenever you need a new Dialog
. The Dialog
however, can't be edited any more (as far as I know). Well maybe with the onPrepareDialog(int id, Dialog dialog)
method, but I am still trying to get that working myself. My point is, that after creation, you can't edit the User Interface on the Dialog anymore. So the way that does work is by Overriding the onCreateDialog(int id)
in your code, creating an AlertDialog.Builder
(or whatever you are basing your Dialog
on: ProgressDialog
/AlertDialog
/etc.) and setting the title, layout and buttons here. After this, you can call the create()
method, which will actually build the Dialog
with your settings.
@Override
public dialog onCreateDialog(int id){
// Create the View to use in the Dialog.
LayoutInflater inflater = getLayoutInflater();
// Inflate the View you want to set as the layout.
final View layout = inflater.inflate(R.layout.your_dialog_layout,
(ViewGroup) findViewById(R.id.your_parent_view);
// Create Dialog Builder Object to create Dialog from.
AlertDialog.Builder adBuilder = new AlertDialog.Builder(this);
// Set the title to use.
adBuilder.setMessage("Your title");
// Add only a positive button.
adBuilder.setPositiveButton("Add", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which){
// Handle click on positive button here.
}
};
// Set the layout which you want to use (inflated at the beginning).
adBuilder.setLayout(layout);
// After you've set all the options you want to set, call this method.
AlertDialog dialog = adBuilder.create();
return dialog;
}
This will create a Dialog
with the title set to "Your Title", which uses the layout you specified, and has one button with the text "Add". Note that the main difference between positive, neutral and negative buttons is that their layout on the Dialog
is changed accordingly (positive = left, neutral = middle and negative = right).
For more information I would advise you to see the documentation about this.
Why not use an AlertDialog
if you have 3 or less buttons?
My AlertDialog looks like this:
My java code:
LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.add_filter, null);
AlertDialog alertDialog = new AlertDialog.Builder(this)
.create();
alertDialog.setTitle("AlertDialog title");
alertDialog.setMessage("AlertDialog message");
alertDialog.setView(view);
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
}
});
alertDialog.show();
My XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<Spinner
android:id="@+id/spinner_filter"
android:layout_width="wrap_content"
android:spinnerMode="dropdown"
android:layout_height="wrap_content"
android:entries="@array/filter_array"
android:prompt="@string/filter_prompt" />
</LinearLayout>
Simple yet does what you need.
This question is old, but my solution is using an relative layout within the main relative layout. That way you can create your own title. It doesn't see a top TextView as a title if you use it that way:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
>
<RelativeLayout
android:id="@+id/layout_root"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView android:id="@+id/txt_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFF"
android:text="Name"
android:textStyle="bold"
/>
<EditText android:id="@+id/edit_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_name"
/>
<TextView android:id="@+id/txt_model"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFF"
android:layout_below="@+id/edit_name"
android:text="Phone Model"
/>
<TextView android:id="@+id/edit_model"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_model"
/>
<Button android:id="@+id/but_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/edit_model"
android:text="Cancel"
/>
<Button android:id="@+id/but_submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/edit_model"
android:layout_toRightOf="@+id/but_cancel"
android:text="Submit"
/>
</RelativeLayout>
</RelativeLayout>
This seems to be the easiest way.
Please use this line in to hide built-in title from dialog
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
and add textView in your layout file.
精彩评论