Nano Hash - криптовалюты, майнинг, программирование

почему заголовок диалога Android не отображается в версиях Android marshmallow?

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

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

Вот мой_диалог.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-версии леденца на палочке. Он отлично работает, вот скриншот на леденце:

Диалог на версии Android Lollipop

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

Диалог на Android-версии marshmallow

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

myDialog.create()

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


  • Используйте линейную/относительную компоновку для этого 23.01.2019
  • @AbhinavGupta Я уже пробовал, но заголовок все еще не отображается на зефире. 23.01.2019

Ответы:


1

Вы пытались применить пользовательский стиль... Диалоговое окно принимает стиль родительского действия, для которого могло быть установлено значение 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))
23.01.2019
  • Спасибо за ваш ответ, но я использую диалоговое окно. В моем случае я не могу использовать диалоговое окно предупреждения. 23.01.2019

  • 2

    Используйте 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();
    
    23.01.2019
  • Спасибо, но я не могу использовать диалог предупреждений, потому что для setView требуется уровень API 21, и в моем случае я не могу использовать диалог и alertDialog вместе. 23.01.2019
  • @AndroidExpert ссылается на эту ссылку: stackoverflow.com/questions/22655599/, вы также можете установить собственный макет с диалоговым окном предупреждения. 23.01.2019
  • Спасибо, но я уже пробовал alertDialog, но если я использую диалоговое окно оповещения, я не могу отменить или отклонить его. 23.01.2019
  • @AndroidExpert, вы можете отклонить это. Используйте setCancelable(true) && просто посмотрите на мой код и нажмите кнопку "ОК", используя dialog.dismiss(), вы можете отклонить его. :) 24.01.2019
  • Спасибо, но в моем случае мне нужно закрыть диалоговое окно предупреждения вне кнопки, как я могу вызвать dialog.dismiss() или dialog.cancel() вне кнопки? 24.01.2019
  • установить alertDialogBuilder.setCancelable(true) 24.01.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..