android两个listview一个低于另一个

时间:2014-07-08 14:55:45

标签: android

我有两个listviews listview2和listview3

我想要的是listview3应该显示在listview2下面但它会重叠

如何获得正确的输出,即一个在另一个下面显示

最后一个ListView是导航抽屉

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">


<RelativeLayout 
    android:id="@+id/container"
    android:layout_width="match_parent"

android:layout_height="match_parent">
              <ListView 
    android:id="@+id/listview2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    ></ListView>
        </RelativeLayout>
<RelativeLayout 
    android:layout_below="@id/container"
    android:id="@+id/container1"
    android:layout_width="match_parent"

android:layout_height="match_parent">          

                <ListView 

    android:id="@+id/listview3"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    ></ListView>
 </RelativeLayout>   





<ListView 
    android:id="@+id/drawerlist"
    android:background="#0099CC"
    android:cacheColorHint="#00000000" 

    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="left" ></ListView>

</android.support.v4.widget.DrawerLayout>

6 个答案:

答案 0 :(得分:3)

将LinearLayout与weight属性一起使用。

<LinearLayout
android:id="@+id/container"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ListView
    android:id="@+id/listview2"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="5"/>

<ListView
    android:id="@+id/listview3"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="5" />
</LinearLayout>

答案 1 :(得分:0)

第一个RelativeLayout占据屏幕的整个高度。您需要限制第一个RelativeLayout的高度,否则第二个RelativeLayout将始终不在View中。

答案 2 :(得分:0)

**重叠因为: 1.您将列表的高度设置为:match_parent

  1. 相对布局中没有给出参考**
  2. 试试这个:

    <RelativeLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <ListView
            android:id="@+id/listview1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"></ListView>
    
        <ListView
            android:id="@+id/listview2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/listview1"></ListView>
    
        <ListView
    
            android:id="@+id/listview3"
            android:layout_below="@id/listview2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
    
            ></ListView>
    </RelativeLayout>
    

答案 3 :(得分:0)

您可以使用layout_weight属性使listview两个身高相同。

例如,您可以按照以下层次结构 -

<LinearLayout orientation="vertical">
   <ListView layout_weight=1></ListView>   
   <ListView layout_weight=1></ListView>
</LinearLayout>

答案 4 :(得分:0)

将两个ListView嵌套在相同的相对布局块中,一个接一个地嵌套。给他们两个相同的重量

<RelativeLayout
    android:id="@+id/container
    ...
    <ListView 
        android:id="@+id/listview2"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        ...
    ></ListView>

    <ListView 
        android:id="@+id/listview3"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:layout_below="@id/listview2"
        ...
    ></ListView>

</RelativeLayout>

我无法对此进行测试,因此可能需要进行一些调整,但请试一试。

我还建议您在发布时花一些时间格式化代码,因为它有助于我们弄清楚您在做什么。

答案 5 :(得分:0)

取自https://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html

  

要使用DrawerLayout,请将主要内容视图定位为   第一个孩子的宽度和高度为match_parent。添加抽屉为   主要内容视图后的子视图并设置layout_gravity   适当。抽屉通常使用match_parent作为高度   固定宽度。

所以你的第二个RelativeLayout和抽屉列表都是抽屉。无论如何,它还不清楚你想要实现什么,所以你必须更详细地描述它。如果你想让listview3从底部和listview2上来为它腾出空间,你将不得不使用不同的布局或将listview3设置为特定的高度,并将你的第一个RelativeLayout设置为精确的高度(使用ValueAnimator获取底部边距I&# 39; d说)。

编辑: 在阅读了你的评论之后,它似乎不是你想要实现的东西。在这种情况下,我上面描述的是罪魁祸首,即第二个RelativeLayout被解释为抽屉。确保将RelativeLayouts组合到单个布局(最好是带有权重的LinearLayout)。