Android对话框:删除标题栏

Jas*_*ers 106 layout android dialog

我有一个奇怪的行为,我无法确定其来源.

我的应用程序与经典

requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)

删除标题/状态栏.

然后我创建一个对话框,允许用户输入信息(名称等)

使用物理键盘,没问题但是当我使用虚拟键盘时,我有一个奇怪的行为:

每当我按下虚拟键盘上的一个键时,标题/状态栏会再次出现,推动所有键盘布局再次消失(就像我启动应用程序时的动画一样)

这是一些代码:

        dialog = new Dialog(context);
        dialog.setContentView(R.layout.logindialog);
        dialog.setTitle("Login:");

        WindowManager.LayoutParams a = dialog.getWindow().getAttributes();

//      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

        a.dimAmount = 0;
        dialog.getWindow().setAttributes(a);

        dialog.setCancelable(true);
        dialog.getWindow().setLayout(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
Run Code Online (Sandbox Code Playgroud)

然后

dialog.show();
Run Code Online (Sandbox Code Playgroud)

我试过了

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)

但它崩溃了我的应用程序.

这是xml

    <TextView android:id="@+id/LoginText"
        android:gravity="fill"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Login:">
    </TextView>         
    <EditText android:id="@+id/LoginEdit"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="jason"
        android:layout_width="200sp"/>
    <TextView android:id="@+id/PasswordText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password:">
    </TextView>         
    <EditText android:id="@+id/PasswordEdit"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="welcome"
        android:layout_width="200sp"
        android:password="true"/>
<LinearLayout 
    android:id="@+id/test2"
    android:gravity="center_horizontal"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
<Button android:id="@+id/LoginButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Login" />
<Button android:id="@+id/CreateButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Create" />
<Button android:id="@+id/CancelLogin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Cancel" />
</LinearLayout>/>
Run Code Online (Sandbox Code Playgroud)

sat*_*sat 430

使用,

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before     
dialog.setContentView(R.layout.logindialog);
Run Code Online (Sandbox Code Playgroud)

  • 在某些设备上,这会导致对话框布局失去宽度,但保持高度.我发现在.show()之前添加它来修复它,即使它们已经在xml布局中设置了.dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.WRAP_CONTENT); (9认同)
  • **如果您使用的是 AppCompatDialog,则使用:** `dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);` (2认同)

Pra*_*hat 24

在styles.xml中创建新样式

<style name="myDialog" parent="android:style/Theme.Dialog">
   <item name="android:windowNoTitle">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后将此添加到您的清单:

 <activity android:name=".youractivity" android:theme="@style/myDialog"></activity>
Run Code Online (Sandbox Code Playgroud)


Ran*_*mar 14

以上所有答案对AppCompatDialog都不起作用

如果您正在使用AppCompatDialog试试这个

重要说明:在调用setContentView之前设置它.

dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);


Sag*_*ela 5

创建您的XML,该XML显示在对话框中,这里是activity_no_title_dialog

final Dialog dialog1 = new Dialog(context);
dialog1.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog1.setContentView(R.layout.activity_no_title_dialog);
dialog1.show();
Run Code Online (Sandbox Code Playgroud)