如何优化这种布局?

时间:2013-02-13 08:59:30

标签: android xml listview layout

我有这个xml布局代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal" 
    android:background="#FFFFFF">
    <ScrollView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >

        <TableLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <TextView
            android:id="@+id/nektaText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="10pt"
            android:textAlignment="center"
            android:text="example text will not be used" />

            <ImageView
            android:id="@+id/horilinee"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
            android:src="@drawable/horiline" />

            <TableRow
                android:id="@+id/table"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:gravity="bottom" >

                <Button
                android:id="@+id/send"
                android:text="أرسل"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

                <EditText
                android:id="@+id/commenttext"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:hint="اكتب التعليق هنا"
                android:minLines="1"
                android:paddingRight="5dp"
                android:paddingLeft="5dp"
                android:scrollHorizontally="true"
                android:scrollbars="vertical"
                android:layout_weight="1"
                android:singleLine="false" />

            </TableRow>

            <ImageView
            android:id="@+id/horilineee"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
            android:src="@drawable/horiline" />

            <ListView
                android:id="@id/android:list"
                android:layout_width="match_parent"
                android:layout_height="fill_parent"
                android:drawSelectorOnTop="false"
                android:paddingLeft="5dp"
                android:paddingRight="5dp" />

        </TableLayout>
    </ScrollView>


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"

        android:gravity="center_horizontal" >

        <TableLayout
            android:id="@+id/tableLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >

            <TableRow
                android:id="@+id/tableRow0"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:gravity="bottom"
                android:paddingBottom="10dp"
                android:paddingTop="10dp" >

                <ImageView
                    android:id="@+id/horiline"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:src="@drawable/horiline" />
            </TableRow>

            <TableRow
                android:id="@+id/tableRow1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:gravity="bottom" >

                <ImageView
                    android:id="@+id/share"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:src="@drawable/share" />

                <ImageView
                    android:id="@+id/block"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:src="@drawable/block" />

                <ImageView
                    android:id="@+id/thumbdown"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:src="@drawable/thumbdown" />

                <ImageView
                    android:id="@+id/thumbup"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:src="@drawable/thumbup" />
            </TableRow>

            <TableRow
                android:id="@+id/tableRow2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:gravity="bottom" >

                <TextView
                    android:id="@+id/sharetext"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center_horizontal"
                    android:text="شارك"
                    android:textSize="12dp" />

                <TextView
                    android:id="@+id/blocktext"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center_horizontal"
                    android:text="إبلاغ إساءة"
                    android:textSize="12dp" />

                <TextView
                    android:id="@+id/dislikenumber"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center_horizontal"
                    android:textColor="#FF0000"
                    android:textSize="12dp" />

                <TextView
                    android:id="@+id/likenumber"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center_horizontal"
                    android:textColor="#00FF00"
                    android:textSize="12dp" />
            </TableRow>
        </TableLayout>
    </LinearLayout>

</RelativeLayout>

但它似乎并没有像我希望的那样工作。我需要它像下图:

figure

我的代码的问题是列表视图我无法在tablelayout之前将其拉伸到底部。另一个问题是如果顶部的textview太长,它出现在tablelayout下面并且可见。

当键盘可见时,底部的tablelayout也向上移动,我不希望这种情况发生。

有什么建议吗?

4 个答案:

答案 0 :(得分:1)

在您的布局中只有一个ListView。您可以使用addHeaderView()方法将其他视图(如图中所示)作为标题添加到列表视图中。这样您就可以获得所需的滚动效果。

答案 1 :(得分:0)

谢谢大家的支持。我想出了一个更好的解决方案:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="70dp"
            android:layout_weight="1" >

            <TextView
                android:id="@+id/nektaText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="example text will not be used"
                android:textAlignment="center"
                android:textSize="10pt" />
        </ScrollView>

        <ImageView
            android:id="@+id/horilinee"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="5dp"
            android:paddingTop="5dp"
            android:src="@drawable/horiline" />

        <TableRow
            android:id="@+id/table"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="0.5"
            android:gravity="bottom" >

            <Button
                android:id="@+id/send"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="4"
                android:text="أرسل" />

            <EditText
                android:id="@+id/commenttext"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:hint="اكتب التعليق هنا"
                android:minLines="1"
                android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:scrollHorizontally="true"
                android:scrollbars="vertical"
                android:singleLine="false" />
        </TableRow>

        <ImageView
            android:id="@+id/horilineee"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="5dp"
            android:paddingTop="5dp"
            android:src="@drawable/horiline" />

        <ListView
            android:id="@id/android:list"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="50"
            android:drawSelectorOnTop="false"
            android:paddingLeft="5dp"
            android:paddingRight="5dp" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/layout0"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="end" >

        <TableLayout
            android:id="@+id/tableLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >

            <TableRow
                android:id="@+id/tableRow0"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:gravity="bottom"
                android:paddingBottom="10dp"
                android:paddingTop="10dp" >

                <ImageView
                    android:id="@+id/horiline"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:src="@drawable/horiline" />
            </TableRow>

            <TableRow
                android:id="@+id/tableRow1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:gravity="bottom" >

                <ImageView
                    android:id="@+id/share"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:src="@drawable/share" />

                <ImageView
                    android:id="@+id/block"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:src="@drawable/block" />

                <ImageView
                    android:id="@+id/thumbdown"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:src="@drawable/thumbdown" />

                <ImageView
                    android:id="@+id/thumbup"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:src="@drawable/thumbup" />
            </TableRow>

            <TableRow
                android:id="@+id/tableRow2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:gravity="bottom" >

                <TextView
                    android:id="@+id/sharetext"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center_horizontal"
                    android:text="شارك"
                    android:textSize="12dp" />

                <TextView
                    android:id="@+id/blocktext"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center_horizontal"
                    android:text="إبلاغ إساءة"
                    android:textSize="12dp" />

                <TextView
                    android:id="@+id/dislikenumber"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center_horizontal"
                    android:textColor="#FF0000"
                    android:textSize="12dp" />

                <TextView
                    android:id="@+id/likenumber"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:gravity="center_horizontal"
                    android:textColor="#00FF00"
                    android:textSize="12dp" />
            </TableRow>
        </TableLayout>
    </LinearLayout>

</LinearLayout>

答案 2 :(得分:-1)

ScrollView需要声明:

android:layout_above="@+id/Layout1" 

Layout1是主持tableLayout1

的布局

但是你会在ListView中遇到滚动视图

的一些问题

答案 3 :(得分:-1)

由于RelativeLayout中只有两个布局,请使用LinearLayout。这将解决重叠问题。设置ScrollView的权重,使TableLayout保持在最低位置。

键盘移动Bottom表格布局,因为它的模式设置为Resize。您通常会通过AndroidManifest.xml中每个定义的android:windowSoftInputMode属性来控制此行为。将其值设置为adjustPan