TextView的文字换行和宽度

时间:2018-11-13 19:41:05

标签: android textview

这个想法是在它的右边有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 :(得分:0)

添加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"/>

答案 1 :(得分:0)

您需要在屏幕末端修复图像,以使其界面更加稳定。否则,由于Image的位置不同,它看起来很奇怪。为此,请将它们添加到您的代码中:

添加android:layout_alignParentRight="true"

然后移动android:layout_toEndOf="@id/name"

答案 2 :(得分:0)

首先,按照他人的建议进行操作,并设置ImageButton的属性             android:layout_alignParentEnd =“ true”

第二,摆脱掉textView的填充端。对您来说,所有的工作都在浪费可用于文本的空间。

第三,在TextView中添加一个属性以使其与图像的开始对齐。             android:layout_toStartOf =“ @ + id / 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"/>

enter image description here现在,您可以使用所需的文本换行。但是,Android TextView没有允许使用连字符的属性,并且无法决定在何处打断长字或一组字母。因此,textView会在方便时中断,例如在文本后留一个空格。否则,它将允许文本填充容器直到一行的末尾,然后继续下一行。

答案 3 :(得分:-1)

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>