我已经浏览了互联网,试图找到一些关于XML设计的指南。
到目前为止,我发现最好的设计是保持布局“平坦”,这意味着将布局嵌套保持在最低限度。
基本上我将下面的四个布局堆叠在一起。我没有计划添加超过4.每个之间唯一不同的是simple_detail_image中的图像。我发现的选项是为每个项目使用<include>
,然后以编程方式更改图像。
这是最佳做法还是更实用?
我探索过的另一个选择是制作一个ListView
并填充它们,但这看起来有点矫枉过正。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_rounded"
android:padding="4dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/simple_detail_image"
android:layout_width="72dp"
android:layout_height="72dp"
android:src="@drawable/ic_launcher"/>
<TextView
android:id="@+id/simple_detail_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="12dp"
android:layout_marginStart="12dp"
android:text="Hi"/>
<Space
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"/>
<ImageView
android:layout_gravity="center"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginRight="@dimen/chevron_horizontal_margin"
android:layout_marginEnd="@dimen/chevron_horizontal_margin"
android:src="@drawable/ic_chevron_gray"/>
</LinearLayout>
答案 0 :(得分:1)
您可以使用单个TextView代替整个布局,没有图像和容器来简化整个过程。
由于TextView可以同时包含不同的复合绘图 例如:
android:drawablePadding="4dp"
android:drawableLeft="@drawable/ic_launcher"
android:drawableRight="@drawable/ic_chevron_gray"
您可以在外部(垂直)容器中包含4个TextView,然后就完成了。
然后,在代码中,更改drawableLeft:
//public void setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom)
public void setCompoundDrawablesWithIntrinsicBounds (R.drawable.your_left_drawable_1, 0, R.drawable.ic_chevron_gray, 0);
这将使您的布局保持超级平稳和高效。