如何在TextView中包装文本?

时间:2014-11-18 11:15:07

标签: android textview textwrapping

这是我的布局:

<GridLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:columnCount="2"
    android:orientation="horizontal"
    android:rowCount="2" >

    <ImageView
        android:id="@+id/img"
        android:layout_width="150dp"
        android:layout_height="225dp"
        android:layout_gravity="left|top"
        android:layout_column="0"
        android:layout_rowSpan="2"
        android:contentDescription="@string/imgdesc" />

    <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:layout_column="1"
        android:layout_marginLeft="20dp"
        android:layout_row="0"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/tvDescription"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_gravity="fill_horizontal"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="10dp"
        android:layout_row="1"/>

</GridLayout>

结果如下:

result

正如您所看到的,文本的一部分已经出现在屏幕上,我真的不知道如何修复它。

3 个答案:

答案 0 :(得分:0)

尝试将LinearLayout用于您的设计而不是GridLayout:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/img"
        android:layout_width="150dp"
        android:layout_height="225dp"
        android:contentDescription="@string/imgdesc"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="5dp"
        android:orientation="vertical">
        <TextView
            android:id="@+id/tvName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <TextView
            android:id="@+id/tvDescription"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"/>
    </LinearLayout>
</LinearLayout>

答案 1 :(得分:0)

只需用当前代码替换下面的代码,希望这对你有用。

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:columnCount="2"
    android:orientation="horizontal"
    android:rowCount="2" >
<ImageView
    android:id="@+id/img"
    android:layout_width="100dp"
    android:layout_height="225dp"
    android:layout_column="0"
    android:layout_gravity="left|top"
    android:layout_rowSpan="2"
    android:contentDescription="@string/app_name"
    android:src="@drawable/ic_launcher" />

<TextView
    android:id="@+id/tvName"
    android:layout_width="wrap_content" // this line change
    android:layout_height="wrap_content"
    android:layout_column="1"
    android:layout_gravity="left"
    android:layout_marginLeft="20dp"
    android:layout_row="0"
    android:ems="5"  //this line added
    android:layout_marginRight="10dp"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
    android:id="@+id/tvDescription"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="1"
    android:ems="5"
    android:layout_gravity="fill_horizontal"
    android:layout_marginLeft="20dp"
    android:layout_marginTop="10dp"
    android:layout_marginRight="10dp"
    android:layout_row="1" />

</GridLayout>

注意:可以有很多方法来做同样的事情。

答案 2 :(得分:0)

尝试下面的代码,它会起作用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ImageView
    android:id="@+id/img"
    android:layout_width="150dp"
    android:layout_height="225dp"
    android:layout_gravity="left|top"
    android:layout_column="0"
    android:layout_rowSpan="2"
    android:scaleType="fitXY"
    android:contentDescription="test" />
<LinearLayout 
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
    android:id="@+id/tvName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="left"
    android:layout_column="1"
    android:layout_marginLeft="20dp"
    android:layout_row="0"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
    android:id="@+id/tvDescription"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_column="1"
    android:layout_gravity="fill_horizontal"
    android:layout_marginLeft="20dp"
    android:layout_marginTop="10dp"
    android:layout_row="1"/>
 </LinearLayout>
 </LinearLayout>