Текст обрывается в диалоге

ПОСЛЕДНЯЯ РЕДАКТИРОВАНИЕ: Хорошо, полный хак, но на данный момент я такой «ммм», это работает. Все, что я сделал, чтобы исправить проблему, это добавил android:lines="10" в TextView, и он показал все, как в 2.2 и ICS/JB. Полный хак, потому что это вовсе не абстракция, а что угодно: P.. Спасибо всем, кто помог!

У меня возникли проблемы с отображением текста в пользовательском диалоговом окне с Gingerbread (API 10). Показан только первый текст, как здесь. В Froyo, ICS и JB отображается с каждой отображаемой строкой текста. Я считаю, что это XML, но я не уверен. Где я ошибаюсь?

Изменить: что я пробовал:

-Изменение RelativeLayout на LinearLayout

-Добавление в ScrollView

-Поместить мою строку в одну строку

-используя requestLayout() и forceLayout()

-вынесение диалоговых функций в отдельный класс

-удаление полей в моей кнопке

-использование \n вместо HTML

-AlertDialog

XML-атрибуты -inputType и singleLine в моем TextView

-Я думаю, что есть еще один или два, которые я забыл ..

Вот XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:id="@+id/layout_root"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/dia_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="17dp"
        android:padding="5dp"/>

    <View 
        android:id="@+id/bar"
        android:layout_width="fill_parent"
        android:layout_height="1dip"
        android:background="#CCCCD0"
        android:layout_below="@+id/dia_text"/>

    <Button
        android:id="@+id/dialogbuttongotit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/dialog_confirm"
        android:textSize="20dp"
        android:layout_marginTop="0dp"
        android:layout_marginRight="0dp"
        android:layout_below="@+id/bar"/> 
</RelativeLayout>

Вот код:

final Context context = this;
public void addListenerOnRectHelpButton() {

    img = (ImageButton) findViewById(R.id.rect_img); 
    img.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) {

               //create a new dialog
            final Dialog dialog = new Dialog(context);
            dialog.setContentView(R.layout.custom_dialogs);
            dialog.setTitle("Rectangular Area");

            // set the custom dialog text
            TextView text = (TextView) dialog.findViewById(R.id.dia_text);
            String dialog_rect_txt = "<u>Area of a Rectangular Channel</u><br />" +
                    "Height x Width (H x W)<br />--Example:<br />" +
                    "Height: 3ft,  Width 5ft<br />" +
                    "H x W = 3ft x 5ft = 15ft<sup>2</sup><br />";
            text.setText(Html.fromHtml(dialog_rect_txt));

            Button dialogButton = (Button) dialog.findViewById(R.id.dialogbuttongotit);
            // if button is clicked, close the custom dialog
            dialogButton.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });

            dialog.show();             

        }

    });

}

person toph.    schedule 24.07.2012    source источник
comment
Вместо этого я предлагаю использовать библиотеку поддержки и фрагмент диалога.   -  person Nathan Schwermann    schedule 25.07.2012
comment
Или вы можете просто поместить свой текст в scrollView...   -  person yahya    schedule 25.07.2012
comment
@yahya Я пытался поместить его в scrollView, и это не решило проблему:/   -  person toph.    schedule 25.07.2012
comment
Вы пробовали XML-атрибуты singleLine или inputType?   -  person trevor-e    schedule 25.07.2012
comment
@Atlos Я не уверен, что singleLine поможет, потому что он сделает только одну горизонтальную линию, а не все будет хорошо. Но является ли android:inputType:"textMultiLine" тем, что вы имели в виду для inputType?   -  person toph.    schedule 25.07.2012
comment
Да, это то, о чем я думаю. Это натяжка, но стоит хотя бы попробовать. Не имеет смысла, почему это будет нормально работать с ICS/JB.   -  person trevor-e    schedule 25.07.2012
comment
Итак, я попробовал textMultiLine, и это ничего не дало, но когда я сделал textLongMessage, он все равно обрезался после первой строки, но до первой строки дошло больше слов. Да, очень странно, что это только 2.3.3....и это раздражает!   -  person toph.    schedule 25.07.2012
comment
Я собираюсь попробовать android:inputType="textMultiLine|textLongMessage" и android:singleLine="false" прямо сейчас.   -  person toph.    schedule 25.07.2012
comment
@Atlos android:inputType="textMultiLine|textLongMessage" и android:inputType="textMultiLine" не удалось. Когда я вынул inputType и вставил только singleLine="false", это тоже не сработало. Мужик, что не так?! Если бы 2.3.3 не составляла 64% экосистемы, я бы уже давно отказался от этой проблемы.   -  person toph.    schedule 25.07.2012
comment
Когда у меня была похожая проблема, мне пришлось добавить \n в конце, чтобы не обрезать последнюю строку, лол.   -  person EpicPandaForce    schedule 08.06.2015
comment
... в конце концов, установка параметра строк - это то, что действительно исправило это, так что вы были правы.   -  person EpicPandaForce    schedule 08.06.2015


Ответы (2)


Пробовали ли вы вызывать requestLayout() в TextView?

...
text.setText(Html.fromHtml(dialog_rect_txt));
text.requestLayout();
...
person Deathisfatal    schedule 25.07.2012
comment
это не помогло - person Madina Saidova; 03.06.2020

Почему бы просто не использовать AlertDialog вместо создания собственного?

Dialog dlg = new AlertDialog.Builder(this).setTitle(
    "Rectangular Area").setMessage(dialogRectText).setPositiveButton(
     "Got It", clickListener).create();
dlg.show();
person Robby Pond    schedule 25.07.2012
comment
Я попробовал AlertDialog и получил ту же проблему. Я также только что попытался (с помощью AlertDialog) поместить строку без новых строк и в итоге получил это. Это означает, что в версии 2.3 он не будет учитывать ни мой пользовательский диалог, ни layout_width/height AlertDialog? Очень странно... - person toph.; 25.07.2012