在ScrollView(或类似的东西)中分配两个ListViews显然是不可能的

时间:2015-06-20 12:40:33

标签: android android-layout listview android-listview

我一直在"战斗"试图找到这个设计的解决方案两天,但显然这是不可能的。

方案: 具有4个LinearLayouts及以下的View(活动)必须有一个容器(我一直在尝试使用ScrollView + LinearLayouts)和2个ListViews(每个都有一个TextView标题),然而,这些ListViews会根据一些选择而有所不同来自Dialog的另一个ListView。 首先,当没有添加任何内容时,View应该是完全一样的,但是当我添加时,让我们说3个项目,然后灾难出现。 第一个ListView变得巨大(高度大小),另一个在视野之外。

我已经尝试了很多布局组合但到目前为止没有成功,尝试在向其适配器添加项目后通过java代码调整ListView的大小。

Util.setListViewHeightBasedOnItems(listViewCaixasSelecionadas);

初始视图 - 这没关系: enter image description here

用于选择要添加到ListView适配器的项目的对话框: enter image description here

三个项目添加到ListView(请参阅最后一项下方的巨大空间): enter image description here

第二个ListView的视图,现在我必须滚动很多才能看到它:  enter image description here

从eclipse项目打印: enter image description here

这是我的布局xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layoutTerceiraTela"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<include
    android:id="@+id/include1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    layout="@layout/include_toolbar" />

<include
    android:id="@+id/include2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/include1"
    layout="@layout/include_user_emp" />

<LinearLayout
    android:id="@+id/layoutBotoes"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/include2"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/btnSalvarParte3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_weight="1"
        android:text="Salvar" />

    <Button
        android:id="@+id/btnAdicionarCaixa"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="+Caixa" />

    <Button
        android:id="@+id/btnAdicionarProduto"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="+Produto" />
</LinearLayout>

<LinearLayout
    android:id="@+id/layoutTituloTela"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_below="@id/layoutBotoes"
    android:layout_marginTop="2dp"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textViewNomeProcedimento"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@color/actionbar_background"
        android:padding="3dp"
        android:text="Nome do Procedimento"
        android:textColor="@color/branco"
        android:textSize="16sp"
        android:textStyle="bold" />
</LinearLayout>

<include
    android:id="@+id/ProgressBarTela3"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/layoutTituloTela"
    layout="@layout/include_progress_overlay" />

<!-- Scroll com as duas listas -->

<ScrollView
    android:id="@+id/containerCaixasProdutos"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/viewBottomWindow"
    android:layout_below="@id/layoutTituloTela"
    android:fillViewport="true" >

    <LinearLayout
        android:id="@+id/layoutScrollCaixasProdutos"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="10dip" >

            <TextView
                android:id="@+id/textViewTituloDialog"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="@color/primary_dark"
                android:gravity="center_vertical"
                android:padding="10dp"
                android:text="Caixas"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="@color/branco"
                android:textStyle="bold" />

            <ListView
                android:id="@+id/listViewCaixas"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dip"
                android:background="#B29090" >
            </ListView>
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="10dip" >

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:background="@color/primary_dark"
                android:gravity="center_vertical"
                android:padding="10dp"
                android:text="Produtos (Opcionais)"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="@color/branco"
                android:textStyle="bold" />

            <ListView
                android:id="@+id/listViewProdutosAdicionados"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dip"
                android:background="#4A9C67" >
            </ListView>
        </LinearLayout>
    </LinearLayout>
</ScrollView>

<View
    android:id="@+id/viewBottomWindow"
    android:layout_width="fill_parent"
    android:layout_height="10dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentStart="true"
    android:background="@drawable/btn_cab_done_focused_csa" />

我真的很感激如何解决这个问题,绝对讨厌。

2 个答案:

答案 0 :(得分:0)

用它来测量身高

public void setDynamicListViewHeight(ListView listView) {

        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
                return;
        }
        int totalHeight = 0;
        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        }
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = 0;
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
}

答案 1 :(得分:0)

可能会为视图添加权重可能会解决您的问题。让我知道你的问题是否已经解决。