我有一个包含2个图像视图和文本视图的线性布局。我想在布局行中进行适当的空间分配。它应该是下面的想法
______________________________
|IV| |IV|
| | <-- Text View -----> | |
_______________________________
我怎样才能做到这一点?在拟合两幅图像后,我希望将所有空间分配给textview。
以下是我的尝试,但不起作用。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="horizontal"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_below="@+id/addTrip"
android:layout_weight="1" android:layout_height="wrap_content">
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_gravity="left"
android:src="@drawable/icon" />
<TextView android:layout_weight="1" android:id="@+id/textView1"
android:clickable="true" android:layout_width="0dp"
android:layout_height="wrap_content" android:gravity="right"
android:text="Enter trip name"></TextView>
<ImageView android:id="@+id/imageView1"
android:layout_gravity="right" android:src="@drawable/edit"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
</LinearLayout>
我使用它作为布局填充物。
ArrayList<TripInfo> trips = inst.getListOfTrips(); //reading from DB
for (int i =0; i < trips.size(); i++) {
TripInfo tobj = trips.get(i);
LayoutInflater vi = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout lrow = (LinearLayout)vi.inflate(R.layout.triprow, null);
((TextView)lrow.getChildAt(1)).setText(tobj.getName());
placeHolderLinearLayout.addView(lrow);
}
专家请提供一些意见。我是否也必须在代码中设置任何内容。
答案 0 :(得分:2)
两个图片视图都应该:android:layout_width="wrap_content"
并且没有指定android:layout_weight
。
中央TextView
应该有android:layout_width="0dp"
和android:layout_weight="1"
。
实际上,如果您将1
或任何其他值指定为weigght,则无关紧要。只要这是唯一具有layout_weight
的视图,它就会占用所有可用空间。因此,只需删除上一个android:layout_weight="0.2"
中的ImageView
即可轻松修复您的示例。