2010-04-27 80 views
6

我试图得到像这样的东西:http://img202.imageshack.us/img202/552/layoutoy.png。我将它用作列表项(在技术上作为ExpandableListView的组视图)。如何将按钮对齐到右侧,而不会被TextView重叠?

这里的XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight"> 

    <TextView 
     android:id="@+id/list_item_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ellipsize="end" /> 

    <Button 
     android:id="@+id/list_item_button" 
     android:text="Click me!" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_toRightOf="@id/list_item_text" /> 

</RelativeLayout> 

但是,这是行不通的。按钮不包装其内容,而是使用所有可用的水平空间。 TextView does包装其内容,但我想要它做的是切断它重叠的按钮时。

换句话说,我希望所有按钮的宽度相同,无论textviews中的文本数量多少。这是可能吗?

回答

5

我想你应该尝试一下。 使TextView位于按钮的左侧。这样Textview将不会重叠按钮。如果您希望在行尾处剪切它,则必须将其限制为一行。目前它只是将文本的其余部分移到下一行。

这应该做的伎俩:

<Button 
    android:id="@+id/list_item_button" 
    android:text="Click me!" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true"/> 

<TextView 
    android:id="@+id/list_item_text" 
    android:text="veryveryveryveryveryveryveryveryveryverylong" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toLeftOf="@id/list_item_button" 
    android:ellipsize="end" /> 

</RelativeLayout> 
+0

这样做的伎俩,欢呼! – benvd 2010-04-27 11:58:15

+0

+1。好想法! – Tiago 2013-09-11 00:08:24

4

之前有人试图如上所示的方法(与RelativeLayout的),你应该使用的LinearLayout这一点。权重应正确设置:需要占用空间的元素必须具有权重1和宽度设置为fill_parent,需要保持其最小大小的元素必须具有权重0,宽度为包装内容。

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight"> 
<TextView 
    android:id="@+id/list_item_text" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight=1 
    android:ellipsize="end" /> 

<Button 
    android:id="@+id/list_item_button" 
    android:text="Click me!" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight=0/> 

</LinearLayout>