我使用线性布局创建了下面的布局,它运行正常,但我怀疑它可以优化,因为我使用嵌套的线性布局创建了这个UI,我认为它不太好。
那么请你帮助我使用相对布局来优化这种线性布局吗?
我已经定义了一个布局:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="6dip">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="fill_parent"
android:layout_marginLeft="10dip">
<TextView
android:id="@+id/txtViewTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:textSize="18dip"
android:text="hello"
/>
<TextView
android:id="@+id/txtViewDescription"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:textSize="14dip"
android:text="hello"
/>
</LinearLayout>
<ImageView
android:id="@+id/image"
android:layout_width="50dip"
android:layout_height="fill_parent"
android:src="@drawable/arrow"
android:layout_marginLeft="3dip"
android:scaleType="center"/>
</LinearLayout>
答案 0 :(得分:2)
以下是使用RelativeLayout重构代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:padding="6dip">
<ImageView android:layout_marginLeft="3dip" android:id="@+id/image"
android:src="@drawable/arrow_cell"
android:layout_width="50dip" android:scaleType="center"
android:layout_alignParentRight="true" android:layout_height="wrap_content" android:layout_centerVertical="true"></ImageView>
<TextView android:textSize="18dip" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:id="@+id/txtViewTitle"
android:layout_marginLeft="10dip" android:text="hello"
android:gravity="center_vertical" android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/image"></TextView>
<TextView android:textSize="14dip" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:id="@+id/txtViewDescription"
android:layout_marginLeft="10dip" android:text="hello2"
android:gravity="center_vertical" android:layout_below="@+id/txtViewTitle"
android:layout_toLeftOf="@+id/image"></TextView>
</RelativeLayout>
正如您所说,您希望将其用作ListView中的一行,我将父布局的高度更改为“wrap_content”。
答案 1 :(得分:1)
你可以尝试这个,但我认为你不需要这个
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="6dip">
<TextView android:id="@+id/txtViewTitle" android:layout_width="250dip"
android:layout_height="200dip" android:gravity="center_vertical"
android:textSize="18dip" android:text="hello" />
<TextView android:id="@+id/txtViewDescription"
android:layout_below="@+id/txtViewTitle" android:layout_width="250dip"
android:layout_height="200dip" android:gravity="center_vertical"
android:textSize="14dip" android:text="hello" />
<ImageView android:id="@+id/image" android:layout_width="50dip"
android:layout_height="fill_parent" android:layout_marginLeft="3dip"
android:scaleType="center" android:layout_alignParentRight="true" /> </RelativeLayout>
答案 2 :(得分:0)
希望这有帮助
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="3dip">
<ImageView android:id="@+id/image"
android:layout_width="50dip"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_marginLeft="3dip"
android:scaleType="center"
android:src="@drawable/arrow"
android:gravity="center" />
<TextView android:id="@+id/txtViewDescription"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textSize="14dip"
android:text="hello"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/image"
/>
<TextView android:id="@+id/txtViewTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textSize="18dip"
android:text="hello"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/image"
android:layout_above="@+id/txtViewDescription"
/>
答案 3 :(得分:0)
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:id="@+id/txtViewTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textSize="18dip"
android:text="hello"
/>
<TextView
android:id="@+id/txtViewDescription"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:textSize="14dip"
android:text="hello"
/>
<ImageView
android:id="@+id/image"
android:layout_width="50dip"
android:layout_height="fill_parent"
android:src="@drawable/arrow"
android:layout_marginLeft="3dip"
android:scaleType="center"/>
</LinearLayout>
答案 4 :(得分:0)
也许您可以使用relativelayout来替换linearlayout,因为对于这样一个不太复杂的UI,relativelayout具有更好的性能。