创建列表项的最佳实践

时间:2014-08-27 21:09:56

标签: android

我需要为列表视图项创建一个如下所示的布局。但我不是想创造它,但我也在考虑性能。我试图通过使用具有权重属性的嵌套线性布局来做到这一点,但据我所知,使用具有此类属性的嵌套线性布局不是一个好习惯,因为它会降低我的应用程序的性能。我也尝试使用相对布局,但我还没有达到预期的效果。应该将最多的空间给予中间文本视图。 在此先感谢您的帮助。

enter image description here

3 个答案:

答案 0 :(得分:0)

也许我没有正确理解你 - 也许你说的还有某些要求,但我认为它应该符合你的需求:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal"
android:weightSum="1">

<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.25"
    android:background="#8E7AE5"></RelativeLayout>

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.5"
    android:background="#E57A7A"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#D5E57A"
        android:gravity="center"
        android:text="Top" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:gravity="center"
        android:text="Down" />
</LinearLayout>


<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.25"
    android:background="#8E7AE5"></RelativeLayout>
</LinearLayout>

答案 1 :(得分:0)

好吧,我会这样做:

<LinearLayout xmlns:andoird="http://schemas.android.com/apk/res/android"
andoird:layout_width="match_parent"
andoird:layout_height="48dp"
andoird:orientation="horizontal"
android:weightSum:1>


<TextView
    andoird:layout_width="0dp"
    andoird:layout_height="match_parent"
    andoird:layout_weight="0.25"
    andoird:text="Left textView"/>

<!-- Middle container -->
<LinearLayout
    andoird:layout_width="0dp"
    andoird:layout_height="wrap_content"
    andoird:layout_weight="0.5"
    andoird:orientation="vertical">

    <TextView
        andoird:layout_width="match_parent"
        andoird:layout_height="24dp"
        andoird:text="Middle Top textView"/>

    <TextView
        andoird:layout_width="match_parent"
        andoird:layout_height="24dp"
        andoird:text="Middle Bottom textView"/>

</LinearLayout>

<Switch
    andoird:layout_width="0dp"
    andoird:layout_height="match_parent"
    andoird:layout_weight="0.25"
    andoird:text="Right switch" />

此布局不会抛出任何有关性能的XML警告。说到性能,你应该在ListView适配器中使用ViewHolder。它有很多帮助。

答案 2 :(得分:0)

请尝试这种方式,希望这有助于您解决问题。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.25"
        android:gravity="center_vertical"
        android:paddingLeft="10dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="textview"/>

    </LinearLayout>
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.50"
        android:orientation="vertical"
        android:paddingLeft="10dp">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="center_vertical">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="textview"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="center_vertical">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="textview"/>
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.25"
        android:gravity="center_vertical"
        android:paddingLeft="10dp">
        <Switch
            android:id="@+id/main_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>
</LinearLayout>

注意:我认为使用LinearLayout可以满足您的需求。