Представление EditText не раскрывается на новой строке - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь получить комментарий пользователя и после нажатия кнопки ввода текст просто скрывается из-за изменения строки. я я пытаюсь расширить свой EditText View, чтобы я мог показать как минимум 4 строки комментария.

<LinearLayout
    android:id="@+id/comments_body_box"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentStart="true"
    android:background="#fff"
    android:elevation="8dp"
    android:gravity="right"
    android:maxHeight="150dp"
    android:orientation="horizontal"
    android:weightSum="10"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent">

    <EditText
        android:id="@+id/comments_text_body"
        android:layout_width="151dp"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:layout_weight="8"
        android:inputType="textCapSentences|textMultiLine"
        android:maxHeight="100dp"
        android:maxLength="2000"
        android:maxLines="4"
        android:paddingBottom="12dp"
        android:paddingEnd="10dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:paddingTop="16dp" />

    <ImageView
        android:id="@+id/comment_send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="12dp"
        app:srcCompat="@drawable/ic_send_black_24dp" />

</LinearLayout>

Выше мой текущий код, может кто-нибудь сказать мне, что не так с моим файлом XML?

Я также добавил следующие два атрибута

android:maxLength="2000"
android:maxLines="4"

Ответы [ 4 ]

0 голосов
/ 05 июля 2018

Перед началом необходимо внести несколько изменений в код.

  1. Если вы используете атрибут android:layout_weight, вы всегда должны устанавливать свой атрибут ширины как android:layout_width="0dp"
  2. Поскольку вы используете LinearLayout, удалите атрибуты android:layout_alignParentBottom и android:layout_alignParentEnd. Они недействительны для этого случая.
  3. Так как вы используете ImageView под EditText, было бы лучше, если бы вы присвоили высоту своему виду вместо match_parent, или просто используете wrap_content, если вам не нужен фиксированный размер .

Вы упомянули, что вам нужно отобразить как минимум 4 строки текста в вашем EditText. Если это требуется для всех случаев использования, добавьте атрибут android:minLines="4" к вашему EditText. Если вы хотите, чтобы отображалось максимум 4 строки, тогда ваш код android:maxLines="4" отлично работает.

Чтобы избежать проблемы, когда текст будет скрыт при увеличении количества строк, добавьте атрибут android:scrollbars="vertical" к EditText.

Ваш окончательный XML-файл EditText может выглядеть примерно так (при условии, что требуется минимум 4 строки. Если нет, просто удалите атрибут android:minLines)

        <EditText
            android:id="@+id/comments_text_body"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="8"
            android:inputType="textCapSentences|textMultiLine"
            android:maxHeight="100dp"
            android:minLength="2000"
            android:minLines="4"
            android:scrollbars="vertical"
            android:paddingBottom="12dp"
            android:paddingEnd="10dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:paddingTop="16dp" />
0 голосов
/ 05 июля 2018

Вы должны добавить это в свой атрибут EditText

  android:lines="4"

Кроме того, установите высоту wrap_content

android:layout_height="wrap_content"
0 голосов
/ 05 июля 2018

Сначала я почистил твой код

<LinearLayout
android:id="@+id/comments_body_box"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:background="#fff"
android:elevation="8dp"
android:gravity="right"
android:maxHeight="150dp"
android:orientation="horizontal"
android:weightSum="10"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">

<EditText
    android:id="@+id/comments_text_body"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="8"
    android:inputType="textCapSentences|textMultiLine"
    android:maxHeight="100dp"
    android:maxLength="2000"
    android:maxLines="4"
    android:paddingBottom="12dp"
    android:paddingEnd="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="16dp" />

<ImageView
    android:id="@+id/comment_send"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:padding="12dp"
    app:srcCompat="@drawable/ic_send_black_24dp" />

1) Вы должны использовать layout_width = "0dp" , поскольку вы используете layout_weight в LinearLayout

2) делать НЕ использовать android: layout_alignParentBottom = "true" и android: layout_alignParentEnd = "true", поскольку это не имеет смысла в LinearLayout

3) И использовать layout_height = "wrap_content" это EditText

0 голосов
/ 05 июля 2018

Похоже, что EditText установлено на match_parent.

Попробуйте изменить android:layout_height="match_parent" в android:layout_height="wrap_content"

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