如何在图表和列表视图之间平均划分屏幕

时间:2013-04-15 19:32:13

标签: android layout android-listview

我希望屏幕的上半部分是图形,底部部分是列表视图。这两个部分应该占据屏幕的一半。

通过我现在的设置,只有列表视图中有10个或更多项目才有效。如果有更少,列表视图将占用不到一半的屏幕。如果列表中有一个项目,则它占用的列表项目的高度甚至更低。

基于ANDROID : split the screen in 2 equals parts with 2 listviews 的解决方案,这就是我现在所拥有的:

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

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:layout_weight="0.5"
            android:id="@+id/graph_container"
            android:orientation="vertical">

    </LinearLayout>

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:layout_weight="0.5"
            android:orientation="vertical">

        <ListView
                android:id="@android:id/list"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:drawSelectorOnTop="false"/>
    </LinearLayout>

 </LinearLayout>

我动态添加图表:

((LinearLayout) findViewById(R.id.graph_container))
            .addView(chart, 0, 
                new  LinearLayout.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT, 
                    ViewGroup.LayoutParams.MATCH_PARENT));

有谁知道我应该怎么做?

更新

因此,关键部分是将layout_height更改为math_parent。删除列表视图的父线性布局是可选的,但绝对更清晰。

4 个答案:

答案 0 :(得分:3)

删除listView所在的容器,将权重更改为1并将主容器的高度设置为match_parent。这是一个例子:

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

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@+id/graph_container"
        android:orientation="vertical">

</LinearLayout>

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:fillViewport="true"
    android:drawSelectorOnTop="false" >
</ListView>

答案 1 :(得分:1)

您只需将第一个LinearLayout高度更改为match_parent

即可

答案 2 :(得分:1)

尝试将重量值用作数字1:1 fox示例。

答案 3 :(得分:1)

设置父级LinearLayout的android:weightSum =“1”和android:layout_height =“match_parent”应该有效。