我正在尝试显示两个ListView,一个在另一个之下。问题是第一个是隐藏的,或者没有显示......
我该怎么办? ScrollView里面有RelativeLayout,还是LinearLayout? 非常感谢!!
这是我的布局代码和屏幕截图:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/main_header_selector"
android:fillViewport="true" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/header_solicituds"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="8dp"
android:paddingLeft="25dp"
android:paddingTop="8dp"
android:text="TextView"
android:textColor="@android:color/primary_text_dark"
android:textSize="20sp" />
<View
android:id="@+id/separator_solicituds"
android:layout_width="fill_parent"
android:layout_height="3dp"
android:background="@android:color/holo_orange_light"
android:visibility="visible" />
<ListView
android:id="@+id/listView_solicituds"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="#cdd81e"
android:dividerHeight="0.1dp"
android:scrollbarAlwaysDrawVerticalTrack="true"
android:scrollbarSize="20dip"
android:scrollbarStyle="outsideOverlay"
android:scrollbars="vertical" />
<TextView
android:id="@+id/header_amics"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="8dp"
android:paddingLeft="25dp"
android:paddingTop="8dp"
android:text="TextView"
android:textColor="@android:color/primary_text_dark"
android:textSize="20sp" />
<View
android:id="@+id/separator"
android:layout_width="fill_parent"
android:layout_height="3dp"
android:background="#deeb0e"
android:visibility="visible" />
<ListView
android:id="@+id/listView_amics"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="#cdd81e"
android:dividerHeight="0.1dp"
android:scrollX="0px"
android:scrollY="0px"
android:scrollbarAlwaysDrawVerticalTrack="true"
android:scrollbarSize="20dip"
android:scrollbarStyle="outsideOverlay"
android:scrollbars="vertical" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@android:id/empty"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:text="No friends added yet."
android:textSize="20dp" />
</RelativeLayout>
</LinearLayout>
</ScrollView>
答案 0 :(得分:0)
我们不应该将listview放在scrollview中。感染我们不应该放置滚动视图内滚动的任何视图。如果这样做,那么内部滚动将无法获得焦点,或者很难滚动。
答案 1 :(得分:0)
尝试使用相对布局 或者为列表视图指定权重,以便它们可以占用linearlayout中的空格
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="2" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" >
</ListView>
<ListView
android:id="@+id/listView2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
</ListView>
答案 2 :(得分:0)
如何在一项活动中使用两个列表视图的问题困扰我的时间比我承认的要长。这是我最终解决它的方式。它实际上非常简单。
您需要在滚动视图中粘贴两个列表视图,因为它看起来像您尝试过的那样。现在通常在执行此操作时,listview只会呈现一行的大小,该行会滚动列表。显然,这不是最佳的。因此,解决方案是以编程方式调整列表视图的layout_height,具体取决于列表中的项目/行数。以下是一个如何工作的示例:
XML:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/main_header_selector"
android:fillViewport="true" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listView_solicituds"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ListView
android:id="@+id/listView_solicituds"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</LinearLayout>
</ScrollView>
JAVA:
ListView list1 = (ListView) findViewById(R.id.exp_listView1);
list1.getLayoutParams().height = ***set the desired height of list1 using an int***;
ListView lsit2 = (ListView) findViewById(R.id.listView2);
list2.getLayoutParams().height = ***set the desired height of list2 using an int***;
如果您真的想要使用dp动态设置listview的高度,那么您需要转换像素大小
final float scale = getResources().getDisplayMetrics().density;
int rowHeight = (int) (dp_height_of_your_rows * scale + 0.5);
然后,不使用插入整数,而是使用rowHeight * listView中的行数。