почему заголовок диалогового окна Android не отображается в версиях для Android? - PullRequest
0 голосов
/ 23 января 2019

Я пытался создать настраиваемое диалоговое окно, вот мой код:

        val myDialog = Dialog(this)
        myDialog.setContentView(R.layout.my_dialog)
        myDialog.setTitle("My Dialog!")
        myDialog.setCancelable(true)
        myDialog.show()

Вот мой_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<TextView
        android:text="Hello world!"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:textSize="30sp"/>

</android.support.constraint.ConstraintLayout>

Я запустил это на Android-версии Lollipop Это работает отличновот скриншот на леденце:

Dialog on Android version Lollipop

, как вы видите, диалоговое окно показывает заголовок, но когда я пытаюсь запустить его на версии для Android, название зефира перестает отображаться здесьэто скриншот на зефир:

Dialog on android version marshmallow

, как вы можете видеть заголовок диалога не отображается на версии Android зефир.Я попытался добавить эту строку для отображения заголовка:

myDialog.create()

, но заголовок все еще не отображается.что мне делать?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Вы пытались применить пользовательский стиль ... Диалог принимает Стиль родительского Действия, который мог быть установлен в NoTitle.

<style name="CustomDialog" parent="@style/Theme.AppCompat.Light.Dialog">
    <item name="android:windowNoTitle">false</item>
</style>

По коду Java

new AlertDialog.Builder(new ContextThemeWrapper(Context, R.style.Dialog))
0 голосов
/ 23 января 2019

Используйте AlertDialog вместо Dialog.

  AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setTitle(getString(R.string.app_name));
        alertDialogBuilder.setMessage(getString(R.string.disclaimer))
                .setCancelable(false)
                .setPositiveButton("Ok",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.dismiss();
                            }
                        });
        AlertDialog alert = alertDialogBuilder.create();
        alert.show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...