TextView перенос текста и ширина - PullRequest
0 голосов
/ 13 ноября 2018

Идея состоит в том, чтобы иметь TextView и ImageButton справа от него. TextView является многострочным, оба центрированы вертикально (зависит от того, кто выше). Все идет хорошо, пока некоторые длинные тексты не будут перемещены на следующую строку, оставляя огромную дыру между (видимым) правым краем TextView. Работает хорошо, но выглядит не очень. Как вы можете предложить это сделать?

Слишком ясно: кнопка должна быть справа от видимого края TextView, а не справа от родительского . Проблема в том, чтобы понять видимую ширину TextView, я имею в виду ширину его содержимого.

enter image description here

<?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="wrap_content">

    <TextView
        android:id="@+id/title"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:fontFamily="@font/proxima_nova_regular"
        android:textSize="14sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="Some title"/>

    <RelativeLayout
        android:id="@+id/holder"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/title">

        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="false"
            android:layout_centerVertical="true"
            android:fontFamily="@font/proxima_nova_regular"
            android:paddingEnd="40dp"
            android:textSize="20sp"
            tools:text="aaaaaaaa bbbbb ddddddddddddddddd eeee"/>

        <ImageButton
            android:id="@+id/btn"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_centerVertical="true"
            android:layout_marginStart="-40dp"
            android:layout_toEndOf="@id/name"
            android:clickable="true"
            android:contentDescription="@string/standard_content_description"
            android:focusable="true"
            android:padding="4dp"
            app:srcCompat="@android:drawable/btn_star_big_on"/>
    </RelativeLayout>

</android.support.constraint.ConstraintLayout>

Ответы [ 4 ]

0 голосов
/ 14 ноября 2018

Сначала сделайте так, как предлагали другие, и установите атрибут для ImageButton. андроид: layout_alignParentEnd = "истинный"

Во-вторых, избавьтесь от конца отступа в textView. Все, что вам нужно, это убивает количество места, доступного для текста.

В-третьих, добавьте атрибут в TextView для выравнивания по началу изображения. андроид: layout_toStartOf = "@ + идентификатор / BTN"

Ваш код должен выглядеть примерно так:

   <TextView
    android:id="@+id/name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="false"
    android:layout_centerVertical="true"
    android:fontFamily="sans-serif"
    android:textSize="20sp"
    android:layout_toStartOf="@+id/btn"
    tools:text="aaaaaaaa bbbbb dddddddd haveeverythinginlinefortheotherpeopletoseewhatyouhavedoneinthemaintextview"/>

<ImageButton
    android:id="@+id/btn"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_centerVertical="true"
    android:layout_alignParentEnd="true"
    android:clickable="true"
    android:focusable="true"
    android:padding="4dp"
    app:srcCompat="@android:drawable/btn_star_big_on"/>

введите описание изображения здесь Теперь вы можете получить желаемую текстовую переноску. Однако Android TextView не имеет атрибута, который допускает дефисы, и не может решить, где разбить длинное слово или набор букв. Поэтому textView будет прерываться, когда это будет удобно, как после пробела в тексте. В противном случае текст будет заполнен до конца строки и продолжится на следующей строке.

0 голосов
/ 13 ноября 2018

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

добавьте android:layout_alignParentRight="true"

и romove android:layout_toEndOf="@id/name"

0 голосов
/ 13 ноября 2018
Please add code like below.
<RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/from1"
                android:maxLength="8"
                android:maxLines="1"
                android:paddingTop="8dp"
                android:hint="55"
                android:paddingStart="10dp"
                android:background="@drawable/textlayout"
                android:layout_alignParentStart="true"/>
            <ImageButton
                android:layout_width="wrap_content"
                android:layout_toRightOf="@+id/from1"
                android:gravity="center"                
                app:srcCompat="@android:drawable/start_btn"
                android:layout_height="35dp" />
       </RelativeLayout>
0 голосов
/ 13 ноября 2018

добавить android:layout_alignParentRight="true"

    <ImageButton
       android:layout_alignParentRight="true"
        android:id="@+id/btn"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_centerVertical="true"
        android:layout_toEndOf="@id/name"
        android:clickable="true"  
     android:contentDescription="@string/standard_content_description"
        android:focusable="true"
        android:padding="4dp"
        app:srcCompat="@android:drawable/btn_star_big_on"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...