我正试图得到这样的东西:http://img202.imageshack.us/img202/552/layoutoy.png。我将它用作列表项(从技术上讲,它是ExpandableListView的组视图)。
这是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>
但这不起作用。 Button不包装其内容,而是使用所有可用的水平空间。 TextView 会包装其内容,但我想要它做的是在它与Button重叠时切断。
换句话说,无论textview中的文本量如何,我都希望所有按钮具有相同的宽度。这有可能吗?
答案 0 :(得分:5)
我认为你应该反过来试试。 使TextView位于按钮的左侧。这样Textview就不会与Button重叠。如果你想在它的最后切割它,你必须将它约束到一行。目前它只会将文本的其余部分移动到下一行。
这应该可以解决问题:
<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>
答案 1 :(得分:4)
在任何人尝试上面显示的方法(使用RelativeLayout)之前,您应该使用LinearLayout。权重应该正确设置:需要占用空白空间的元素必须具有1的权重和设置为fill_parent的宽度,需要保持其最小尺寸的元素必须具有0的权重,宽度为WRAP_CONTENT。
<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>