Ответ 1
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before
dialog.setContentView(R.layout.logindialog);
У меня странное поведение, я не могу определить источник.
У меня есть приложение с классическим
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>/>
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before
dialog.setContentView(R.layout.logindialog);
создать новый стиль в styles.xml
<style name="myDialog" parent="android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
</style>
затем добавьте это в свой манифест:
<activity android:name=".youractivity" android:theme="@style/myDialog"></activity>
Все выше сказанное не работает для меня для AppCompatDialog
Если вы используете AppCompatDialog, попробуйте это
Важное примечание: Установите это перед вызовом setContentView.
dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
создайте свой 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();
Вы также можете определить тему в файле манифеста android, чтобы не отображать панель заголовка.
Вы просто определяете тему android:theme="@android:style/Theme.Light.NoTitleBar"
в действии, где вы не хотите отображать строку заголовка
Пример: -
<uses-sdk android:minSdkVersion="4"android:targetSdkVersion="4" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".splash"
android:label="@string/app_name" android:screenOrientation="portrait"
android:theme="@android:style/Theme.Light.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="main" android:screenOrientation="portrait" android:theme="@android:style/Theme.Light.NoTitleBar"></activity>
используйте код ниже setcontentview: -
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.custom_dialog);
Примечание: - выше код должен использовать выше dialog.setContentView(R.layout.custom_dialog);
В XML используйте тему
android:theme="@android:style/Theme.NoTitleBar"
также styles.xml:
<style name="hidetitle" parent="android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
</style>
И затем:
Dialog dialog_hidetitle_example = new Dialog(context, R.style.hidetitle);
Я новичок в Android и наткнулся на этот вопрос, пытаясь избавиться от заголовка.
Я использую действие и отображаю его как диалог. Я прокручивал темы и натыкался на полезный бит по умолчанию.
Вот код из моего AndroidManifest.xml
, который я использовал, когда показывала строку заголовка:
<activity
android:name=".AlertDialog"
android:theme="@android:style/Theme.Holo.Dialog"
>
</activity>
Здесь изменение, которое принесло мне мой желаемый результат:
<activity
android:name=".AlertDialog"
android:theme="@android:style/Theme.Holo.Dialog.NoActionBar"
>
</activity>
Как я уже сказал, я все еще новичок в Android, поэтому у этого могут быть нежелательные побочные эффекты, но, похоже, он дал мне результат, который я хотел, который должен был просто удалить строку заголовка из диалогового окна.
если вы используете пользовательский вид, а затем помните, чтобы запросить функцию окна перед добавлением содержимого, подобного этому
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
dialog.show();
Это сработало для меня.
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>
Вы можете попробовать эту простую всплывающую библиотеку диалогового окна 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, и вы хорошо пойдете
dependencies {
compile 'com.vistrav:pop:2.0'
}