我一直在"战斗"试图找到这个设计的解决方案两天,但显然这是不可能的。
方案: 具有4个LinearLayouts及以下的View(活动)必须有一个容器(我一直在尝试使用ScrollView + LinearLayouts)和2个ListViews(每个都有一个TextView标题),然而,这些ListViews会根据一些选择而有所不同来自Dialog的另一个ListView。 首先,当没有添加任何内容时,View应该是完全一样的,但是当我添加时,让我们说3个项目,然后灾难出现。 第一个ListView变得巨大(高度大小),另一个在视野之外。
我已经尝试了很多布局组合但到目前为止没有成功,尝试在向其适配器添加项目后通过java代码调整ListView的大小。
Util.setListViewHeightBasedOnItems(listViewCaixasSelecionadas);
初始视图 - 这没关系:
用于选择要添加到ListView适配器的项目的对话框:
三个项目添加到ListView(请参阅最后一项下方的巨大空间):
第二个ListView的视图,现在我必须滚动很多才能看到它:
从eclipse项目打印:
这是我的布局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" />
我真的很感激如何解决这个问题,绝对讨厌。
答案 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)
可能会为视图添加权重可能会解决您的问题。让我知道你的问题是否已经解决。