Как добавить заголовок в пользовательский диалог?

Как добавить заголовок в этот настраиваемый диалог?

Введите описание изображения здесь

Я так пробовал

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 

Я также попытался установить такой dialog.setTitle("Enter Details"); . dialog.setTitle("Enter Details"); Но это тоже не дало результата. Итак, как я могу установить заголовок для этого настраиваемого диалога?

Это мой файл dialog_submit.xml, используемый для настраиваемого диалога.

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

Используя некоторые из ваших фрагментов:

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

разреш / макет / 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"/> 

Ты пробовал?

 dialog.setTitle(R.string.app_name); 

Используя определение макета и этот фрагмент кода:

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

Я получаю этот диалог:

Введите описание изображения здесь

Таким образом, вы можете снова попробовать dialog.setTitle («Ввести данные»).
Я использовал эмулятор под управлением Android 2.1.

Что вы можете попробовать, если вам все еще нужен ответ на этот вопрос, является объект AlertDialog.Builder . В этом объекте вы также можете вызвать метод setMessage("Title") , который установит заголовок в Dialog окне, которое вы в конечном итоге создадите с этим. Более того, вы также можете указать positiveButton , neutralButton и negativeButton (скажем, «Добавить», «Хорошо» и «Отменить» в этом порядке, хотя вы можете указать свой собственный текст).

Я считаю, что проблема заключается в том, что когда вы вызываете Dialog dialog = new Dialog(this) onCreateDialog(int id) . Но вот улов: этот метод вызывается один раз и доставляет Dialog который используется повторно, когда вам нужен новый Dialog . Однако Dialog не может быть изменен (насколько я знаю). Ну, может быть, с onPrepareDialog(int id, Dialog dialog) , но я все еще пытаюсь заставить себя работать. Я хочу сказать, что после создания вы больше не можете редактировать пользовательский интерфейс в диалоге. Таким образом, способ, которым это работает, – это onCreateDialog(int id) в вашем коде, создав AlertDialog.Builder (или то, что вы используете на вашем Dialog AlertDialog : ProgressDialog / AlertDialog / и т. Д.) И установив заголовок, макет и кнопки здесь , После этого вы можете вызвать метод create() , который будет фактически создавать Dialog с вашими настройками.

 @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; } 

Это создаст Dialog с титром, установленным на «Ваше название», которое использует указанный вами макет, и имеет одну кнопку с текстом «Добавить». Обратите внимание, что основное различие между позитивными, нейтральными и отрицательными кнопками заключается в том, что их макет на Dialog изменяется соответственно (положительный = левый, нейтральный = средний и отрицательный = правый).

Для получения дополнительной информации я бы посоветовал вам ознакомиться с документацией об этом.

Почему бы не использовать AlertDialog если у вас есть 3 или менее кнопки?

Мой AlertDialog выглядит так:

Введите описание изображения здесь

Мой код Java:

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

Мой 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> 

Простой, но делает то, что вам нужно.

Этот вопрос старый, но мое решение использует относительный макет в основном относительном макете. Таким образом, вы можете создать свой собственный заголовок. Он не видит верхний TextView как заголовок, если вы его используете так:

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

Кажется, это самый простой способ.

Используйте эту строку, чтобы скрыть встроенный заголовок из диалогового окна

dialog.requestWindowFeature (Window.FEATURE_NO_TITLE);

И добавьте textView в ваш файл макета .