我构建了以下XML布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/ll1"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.2"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="0.3"
android:gravity="center"
android:src="@drawable/logo" />
<TextView
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="0.7"
android:gravity="center"
android:text="@string/my_profile"
android:textColor="#A669DA"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll2"
android:background="#A669DA"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.15"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="10dp"
android:layout_marginTop="20dp"
android:text="@string/payroll_header"
android:textColor="#FFFFFF"
android:textSize="20sp" />
</LinearLayout>
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.65" >
<LinearLayout
android:id="@+id/ll3"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:weightSum="2" >
<ExpandableListView
android:id="@+id/expandableListView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fadeScrollbars="true" >
</ExpandableListView>
<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ExpandableListView
android:id="@+id/expandableListView2"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ExpandableListView>
</HorizontalScrollView>
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
</ScrollView>
</LinearLayout>
此XML布局的根元素是线性布局。它包含2个线性布局和一个滚动。由于滚动视图只能有一个子项,因此它包含一个线性布局,该布局又包含一个可展开的listView,水平滚动视图(包含一个可展开的列表视图)和一个列表视图。如您所见,这是一个非常复杂的布局,我认为应该可以简化。基本上,我希望前2个线性布局总是占据屏幕的35%,而滚动视图则需要其余部分。这就是为什么我给第一个线性布局0.2的权重,第二个线性布局的权重为0.15,以及向scrollView赋予0.65的权重。
在scrollView中,我希望3个元素中的每一个都能够占用所需的空间,以便用户在他/她看不到所有内容时向下滚动。我知道expandableListView和ListView已经可以滚动了,所以我将禁用它们中的滚动,以便使用父滚动条。
但是,我遇到了这个设计的几个问题:
1)在第一个屏幕截图中,您可以看到expandableListView,horizontalScrollBar(带有expandableListView)和listView。 它们中的每一个都设置为&#34;包装内容&#34;,所以我希望它们中的每一个都能够占用所需的空间。但是,您可以在第二个屏幕截图中看到,当我打开第二个可展开的listView(水平滚动条中的那个)时,listview不会向下移动以为展开的列表视图腾出空间。我如何实现它,以便当上面的可扩展列表扩展时,每个都向下移动?唯一的方法是将它们组合在一个expandableListView中吗?
2)我的第二个expandableListView位于horizontalScrollBar中,但是,我无法水平滚动它。我甚至可以将水平滚动条放在垂直的scrollBar中吗?
答案 0 :(得分:1)
首先,稍微简化一下:你的第二个LinearLayout(0.15一个)可以省略,因为它只有一个孩子。只需确保调整该单个子项的布局参数(TextView)。
对于您的问题#1,请尝试在根视图上调用invalidate()或requestLayout()。
问题#2实际上已经解决了:Link
我的总体印象是ScrollViews和ListViews的这种嵌套非常复杂。您是否考虑过TabLayout或DrawerLayout等替代方案?
干杯