Android Dialog: удаление строки заголовка - PullRequest
105 голосов
/ 07 июня 2011

У меня странное поведение, я не могу точно определить источник.

У меня есть приложение с классическим

requestWindowFeature(Window.FEATURE_NO_TITLE);

для удаления заголовка / строки состояния.

Затем я создаю диалоговое окно, позволяющее пользователю вводить информацию (имя и т. Д.)

С физической клавиатурой проблем нет, но когда я использую виртуальную клавиатуру, у меня странное поведение:

каждый раз, когда я нажимаю клавишу на виртуальной клавиатуре, появляется заголовок / строка состояния, толкая всю раскладку клавиатуры, а затем снова пропадает (как при запуске приложения)

вот код:

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

, а затем

dialog.show();

Я пытался

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

но мое приложение вылетает.

вот 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>/>

Ответы [ 13 ]

0 голосов
/ 23 марта 2018
**write this before adding view to dialog.**

dialog1.requestWindowFeature (Window.FEATURE_NO_TITLE);

0 голосов
/ 13 апреля 2016

Вы можете попробовать эту простую библиотеку всплывающих окон для Android .Это очень просто для использования в вашей деятельности.

Когда нажата кнопка отправки, попробуйте следующий код после включения вышеупомянутой библиотеки lib в ваш код

Pop.on(this)
   .with()
   .title(R.string.title) //ignore if not needed
   .icon(R.drawable.icon) //ignore if not needed
   .cancelable(false) //ignore if not needed
   .layout(R.layout.custom_pop)
   .when(new Pop.Yah() {
       @Override
       public void clicked(DialogInterface dialog, View view) {
           Toast.makeText(getBaseContext(), "Yah button clicked", Toast.LENGTH_LONG).show();
       }
   }).show();

Добавьте одну строку в ваш gradle и вы готовы кgo

dependencies {
    compile 'com.vistrav:pop:2.0'
}
0 голосов
/ 13 апреля 2016

Это сработало для меня.

Dailog dialog = new Dialog(MyActivity.this, R.style.dialogstyle);

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="dialogstyle" parent="android:style/Theme.Dialog">
        <item name="android:windowBackground">@null</item>
        <item name="android:windowNoTitle">false</item>
    </style>
</resources>
...