0

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

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

基于ANDROID 的解决方案:用 2 个列表视图将屏幕分成 2 个相等的部分,这就是我现在得到的:

<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

4 回答 4

3

移除 listView 所在的容器,将 weight 更改为 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>

于 2013-04-15T19:42:10.807 回答
1

尝试使用重量值作为数字 1:1 狐狸示例。

于 2013-04-15T19:37:07.320 回答
1

为父 LinearLayout 设置 android:weightSum="1" 和 android:layout_height="match_parent" 应该可以工作。

于 2013-04-15T19:37:27.117 回答
1

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

于 2013-04-15T19:36:43.910 回答