Android限制文本视图长度

时间:2014-10-31 08:34:57

标签: android android-layout textview

我有一个包含两个文本视图和一个图像按钮的布局,如下图所示。

textview1

这是布局的代码

<LinearLayout
    android:id="@+id/llGlobalControl"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:background="@color/gc_background"
    android:gravity="center"
    android:padding="6dp" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:orientation="vertical"
        android:weightSum="2" >

        <TextView
            android:id="@+id/tvGlobalControlTitle"
            android:layout_width="wrap_content"
            android:layout_height="0px"
            android:layout_weight="1"
            android:text="Text View"
            android:textColor="@color/green"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/tvGlobalControlArtist"
            android:layout_width="wrap_content"
            android:layout_height="0px"
            android:layout_weight="1"
            android:text="Text View"
            android:textColor="@color/green" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="right"
        android:orientation="vertical" >

        <ImageButton
            android:id="@+id/ibGlobalControlPlayPause"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_action_pause_over_video" />
    </LinearLayout>
</LinearLayout>

我的问题是,如果任一文本视图中的文本太长,按钮&#34;就会被推开&#34;,如下图所示。

enter image description here

相反,我希望文本视图限制所包含的文本,如下图中的红色下划线。

enter image description here

我该怎么做?

6 个答案:

答案 0 :(得分:2)

尝试设置为TextView设置

 android:ellipsize="end"
 android:singleLine="true"

答案 1 :(得分:2)

试试这个

添加

android:ellipsize="end"
android:singleLine="true"

TextView你希望成为单行,最后是"..."

答案 2 :(得分:2)

诀窍是使用android:ellipsize="end"并使用android:maxLines="1"限制行数。

另外,为了防止你的ImageButton被推开,最简单的方法是使用TextViews将android:layout_weight="1"设置为LinearLayout,将android:layout_width="wrap_content"设置为包含按钮的LinearLayout。

这是结果: enter image description here

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/llGlobalControl"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:background="@color/gc_background"
    android:gravity="center"
    android:padding="6dp" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:orientation="vertical"
        android:layout_weight="1"
        android:weightSum="2" >

        <TextView
            android:id="@+id/tvGlobalControlTitle"
            android:layout_width="wrap_content"
            android:layout_height="0px"
            android:layout_weight="1"
            android:text="This is a long text that will take up a lot of space and push the button away"
            android:maxLines="1"
            android:ellipsize="end"
            android:textColor="@color/green"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/tvGlobalControlArtist"
            android:layout_width="wrap_content"
            android:layout_height="0px"
            android:layout_weight="1"
            android:text="Text View"
            android:maxLines="1"
            android:ellipsize="end"
            android:textColor="@color/green" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:gravity="right"
        android:orientation="vertical" >

        <ImageButton
            android:id="@+id/ibGlobalControlPlayPause"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_action_pause_over_video" />

    </LinearLayout>

</LinearLayout>

答案 3 :(得分:1)

尝试这样,

<LinearLayout
    android:id="@+id/llGlobalControl"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:background="@color/gc_background"
    android:gravity="center"
    android:padding="6dp" >

    <LinearLayout
       android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="left"
        android:orientation="vertical"
        android:weightSum="2" >

        <TextView
            android:id="@+id/tvGlobalControlTitle"
            android:layout_width="wrap_content"
            android:layout_height="0px"
            android:layout_weight="1"
            android:text="Text View"
            android:textColor="@color/green"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/tvGlobalControlArtist"
            android:layout_width="wrap_content"
            android:layout_height="0px"
            android:layout_weight="1"
            android:text="Text View"
            android:textColor="@color/green" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="right"
        android:orientation="vertical" >

        <ImageButton
            android:id="@+id/ibGlobalControlPlayPause"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_action_pause_over_video" />
    </LinearLayout>
</LinearLayout>

答案 4 :(得分:0)

尝试这种方式..为布局添加重量..

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="left"
    android:layout_weight="1"
    android:orientation="vertical"
    android:weightSum="2" >

    <TextView
        android:id="@+id/tvGlobalControlTitle"
        android:layout_width="wrap_content"
        android:layout_height="0px"
        android:layout_weight="1"
        android:text="Text View"
        android:textColor="@color/green"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tvGlobalControlArtist"
        android:layout_width="wrap_content"
        android:layout_height="0px"
        android:layout_weight="1"
        android:text="Text View"
        android:textColor="@color/green" />

</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="right"
    android:layout_weight="3"
    android:orientation="vertical" >

    <ImageButton
        android:id="@+id/ibGlobalControlPlayPause"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_action_pause_over_video" />
</LinearLayout>

答案 5 :(得分:0)

尝试使用此布局:

<RelativeLayout
android:id="@+id/llGlobalControl"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/gc_background"
android:padding="6dp" >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:weightSum="2"
    android:layout_toLeftOf="@id/ibGlobalControlPlayPause"
    android:layout_toStartOf="@id/ibGlobalControlPlayPause" >

    <TextView
        android:id="@+id/tvGlobalControlTitle"
        android:layout_width="wrap_content"
        android:layout_height="0px"
        android:layout_weight="1"
        android:text="Text View"
        android:textColor="@color/green"
        android:textStyle="bold" 
        android:singleLine="true"
        android:ellipsize="end"
        android:maxLines="1"/>

    <TextView
        android:id="@+id/tvGlobalControlArtist"
        android:layout_width="wrap_content"
        android:layout_height="0px"
        android:layout_weight="1"
        android:text="Text View"
        android:textColor="@color/green"
        android:singleLine="true"
        android:ellipsize="end"
        android:maxLines="1" />

</LinearLayout>

<ImageButton
    android:id="@+id/ibGlobalControlPlayPause"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:src="@drawable/ic_action_pause_over_video" />

</RelativeLayout>