我有一个包含两个文本视图和一个图像按钮的布局,如下图所示。
这是布局的代码
<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;,如下图所示。
相反,我希望文本视图限制所包含的文本,如下图中的红色下划线。
我该怎么做?
答案 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。
这是结果:
<?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>