Неправильный внешний вид текста в Custom AlertDialog - PullRequest
0 голосов
/ 12 декабря 2018

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

Для макета я использую макет ограничения, и текст: "wrap content".

Вот мой код:

    //inflate alert layout
    LayoutInflater inflater = LayoutInflater.from(this);
    final View view = inflater.inflate(R.layout.connectivity_issue_counter, null);
    //set builder
    AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setView(view);
    dialog.setCancelable(false);

    final AlertDialog alert = dialog.create();
    //define dialog buttons and counter......//
    alert.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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/alertBackground">

    <TextView
        android:id="@+id/connectivity_issue_title"
        style="@style/customAlertTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="32dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="50dp"
        android:text="@string/connectivity_issue_title"
        app:layout_constraintEnd_toStartOf="@+id/connectivity_issue_wait"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/connectivity_issue_wait"
        style="@style/customAlertTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="8dp"
        android:text="@string/connectivity_issue_wait"
        app:layout_constraintEnd_toStartOf="@+id/connectivity_issue_counter_text"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/connectivity_issue_counter_text"
        style="@style/customAlertTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/connectivity_issue_main_text"
        style="@style/customAlertMainText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="32dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="8dp"
        android:text="@string/connectivity_issue_main_text"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/connectivity_issue_title" />

    <Button
        android:id="@+id/connectivity_isuue_button"
        style="@style/customAlertButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="8dp"
        android:text="@string/stop"
        app:layout_constraintEnd_toStartOf="@+id/guideline21"
        app:layout_constraintStart_toStartOf="@+id/guideline22"
        app:layout_constraintTop_toBottomOf="@+id/connectivity_issue_main_text" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline20"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.82" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline21"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.75" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline22"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.25" />

</android.support.constraint.ConstraintLayout>

* Еще одна интересная вещь - на другом планшете (обата же модель) диалог выглядит больше и шире.

Буду признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Как предположил Davidaz, я изменил размер текста с sp на dp, и это помогло решить проблему.

0 голосов
/ 12 декабря 2018

¿Возможно, текст на этом телефоне больше?Я не вижу стиль customAlertTitle, но я полагаю, что текст на «SP», и это «DP», но зависит от размера текста (если телефон настроен на отображение текста крупным шрифтом из его настроеквкладка, это увеличит его размер).

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

Еще одна идея, которая приходит мне в головуявляется то, что размер экрана, который вы просматриваете в предварительном просмотре, больше, чем экран вашего телефона.

Последнее, что я хотел бы попробовать, это изменить размер TextView «android.R.id.message» вручную послесоздание диалога.После того, как вы покажете его, вы можете получить доступ к текстовому представлению сообщения, позвонив по его идентификатору,

TextView messageTv = (TextView) alert.findViewById(android.R.id.message);
messageTv.setTextSize(X);

Редактировать: не обращайте внимания на эту последнюю идею, поскольку вы надуваете свой собственный макет, возможно, вы можете попытаться получить доступ к своемуid и измените его таким же образом, но с R.id.connectivity_issue_wait

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...