Подтвердить что ты не робот

Пользовательский диалог без заголовка и границы

Основываясь на этом коде, http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog. Я успешно могу создать собственный диалог с фоном и кнопками внутри, но все же что-то не так. там все еще пространство для заголовка, и вокруг него есть граница. как избавиться от этих титулов и границ?

вот мой диалог

Dialog pauseMenu = new Dialog(this,R.xml.pause_dialog);
pauseMenu.setContentView(R.layout.pause_menu);
return pauseMenu;

и вот моя макет паузы

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:background="@drawable/pause_menu_cropped" android:layout_gravity="center" android:gravity="center|center_horizontal">
    <TableLayout android:layout_width="wrap_content" android:id="@+id/tableLayout1" android:layout_height="wrap_content">
        <ImageButton android:src="@drawable/pause_button_quit" android:layout_width="wrap_content" android:background="@drawable/pause_button_quit" android:id="@+id/imageButton2" android:layout_height="wrap_content"></ImageButton>
        <ImageButton android:src="@drawable/pause_button_option" android:layout_width="wrap_content" android:background="@drawable/pause_button_option" android:id="@+id/imageButton1" android:layout_height="wrap_content"></ImageButton>
    </TableLayout>
</LinearLayout>
4b9b3361

Ответ 1

Диалог не может быть создан без заголовка. Далее в этом учебнике упоминается:

Диалог с базовым диалогом класс должен иметь заголовок. Если вы не call setTitle(), тогда используемое пространство для названия остается пустым, но все же видимый. Если вы не хотите, чтобы все, тогда вы должны создать свою пользовательский диалог с помощью AlertDialog класс. Однако, поскольку AlertDialog проще всего создать с помощью Класс AlertDialog.Builder, вы не имеют доступ к setContentView (int) метод, использованный выше. Вместо этого вы должны используйте setView (View). Этот метод принимает a View, поэтому вам нужно раздуть внешний вид макета XML.

Этот ответ решает проблему заголовка и границы с использованием пользовательского стиля.

Ответ 2

Я думаю, что это поможет вам

gameOver будет именем диалогового окна, а в setContentView это будет настраиваемый макет диалога ur

gameOver = new Dialog(Main.this);
gameOver.requestWindowFeature(Window.FEATURE_NO_TITLE);
gameOver.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
gameOver.setCancelable(false);
gameOver.setContentView(R.layout.gameover);

Ответ 3

  • Сделайте такой класс:

    public class CustomDialog extends Dialog {
        public AlertFinishiView(Context context) {
            super(context);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.dialog);
            getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        }
    }
    
  • создайте xml в папке пользователя с этим диалоговым окном

    <?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" 
       android:background="@android:color/transparent">
    
       <RelativeLayout 
          android:layout_width="220dp" 
          android:layout_height="140dp" 
          android:layout_centerHorizontal="true" 
          android:layout_centerVertical="true"            
          android:background="@drawable/bg_custom_dialog" >
    
          <Button android:id="@+id/button1" 
             android:layout_width="wrap_content" 
             android:layout_height="wrap_content" 
             android:layout_centerHorizontal="true" 
             android:layout_centerVertical="true" 
             android:text="Button" />
    
       </RelativeLayout>
    
    </RelativeLayout>
    
  • добавьте изображение выше в свою папку с именем bg_custom_dialog.9.png

bg_custom_dialog

  1. вызовите в своей деятельности:

    CustomDialog customDialog = new CustomDialog(this);
    customDialog.show();
    

Ответ 4

Dialog dialog = new Dialog(Main.this);
dialog.getWindow();
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

Ответ 5

Dialog dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

Ответ 6

Попробуйте использовать следующий стиль в ваших стилях. xml:

<style name="free_floating_dialog" parent="@android:style/Theme.Holo.Light.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowCloseOnTouchOutside">false</item>
</style>

Дополнительные параметры см. в разделе "Theme.Holo.Light.Dialog", который является частью источников Android (с Honeycomb) или любого другого стиля диалога, на котором вы основали.

Затем просто используйте этот стиль в качестве основы для своего собственного диалога:

Dialog myDialog = new Dialog(getActivity(), R.style.free_floating_dialog);
myDialog.setContentView(R.layout.myContent);

Ответ 7

Используйте это, он отлично работает;

             dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before     
             dialog.setContentView(R.layout.your_dialog_layout);

Ответ 9

Я использую этот код, и он отлично работает:

AlertDialog.Builder builder = new AlertDialog.Builder(contextActivity,android.R.style.Theme_Holo_Dialog_NoActionBar);
AlertDialog alertDialog = builder.create();
alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
alertDialog.setView(myLayout,0,0,0,0);
alertDialog.show();