请帮看看:为什么已设置: android:layout_height="match_parent" 但List

Android 码拜 5年前 (2016-05-13) 791次浏览
代码如下,ScrollView已经填充了屏幕上空余的部分,但是ListView却只是显示两行Item的高度,不能填充满ScrollView:
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:layout_gravity=”center”
android:orientation=”vertical” >
<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
>
<Button
android:id=”@+id/btnStartDate”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Button”
android:layout_weight=”1″  />
<TextView
android:id=”@+id/textView2″
android:padding=”3dp”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_gravity=”center”
android:gravity=”center”
android:text=” 至 ”
android:layout_weight=”0.00″ />
<Button
android:id=”@+id/btnEndDate”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Button”
android:layout_weight=”1″  />
</LinearLayout>
<TableLayout
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:stretchColumns=”1″
android:layout_weight=”0.11″ >
<TableRow
android:id=”@+id/tableRow1″
android:layout_width=”fill_parent”
android:layout_height=”wrap_content” >
<TextView
android:id=”@+id/textView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:padding=”10dp”
android:text=”收入合计:” />
<TextView
android:id=”@+id/lblIncome”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:gravity=”left”
android:textColor=”#0000ff”
android:text=”” />
</TableRow>
<TableRow
android:id=”@+id/tableRow2″
android:layout_width=”match_parent”
android:layout_height=”wrap_content” >
<TextView
android:id=”@+id/textView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:padding=”10dp”
android:text=”支出合计:” />
<TextView
android:id=”@+id/lblPay”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:textColor=”#ff0000″
android:text=”” />
</TableRow>
</TableLayout>
<ScrollView
android:id=”@+id/scrollView1″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_weight=”2″>
<ListView
android:id=”@+id/listView1″
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:layout_marginLeft=”5dp”
android:layout_marginRight=”5dp” >
</ListView>
</ScrollView>
<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_weight=”0.00″ >
<Button
android:id=”@+id/btnAddIncome”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_weight=”1″
android:text=”记收入” />
<Button
android:id=”@+id/btnAddPay”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_weight=”1″
android:text=”记支出” />

<Button
android:id=”@+id/button3″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_weight=”1″
android:text=”分享” />
</LinearLayout>
</LinearLayout>
问一下要怎么样修改?

解决方案

2

改成fill-parent呗

14

    <ScrollView
android:id=”@+id/scrollView1″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_weight=”2″>
<ListView
android:id=”@+id/listView1″
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:layout_marginLeft=”5dp”
android:layout_marginRight=”5dp” >
</ListView>
</ScrollView>
这里面只有一个ListView为何要在外面嵌套一个ScroolView呢?

14

ListView嵌入到ScrollView里面需要写代码设置ListView的高度
俺贡献一个方法你试试:
/**
* 设置列表框高度,解决滚屏问题
* @param listView 列表对象
* @param addHeight 增加的调节高度,默认是0
*/
public static void initListViewHeight(ListView listView,int addHeight) {
Adapter adapter = listView.getAdapter();
if (adapter == null || adapter.getCount() == 0) {
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = 0;
listView.setLayoutParams(params);
return;
}
int totalHeight = 0;
for (int i = 0; i < adapter.getCount(); i++) {
View listItem = adapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (adapter.getCount() – 1));
params.height += 20 + addHeight;
listView.setLayoutParams(params);
}

14

如楼上所说,ListView嵌入到ScrollView里,情况比较特殊。高度要算过,但你ScrollView里只有一个ListView的话,高度算好了,ScrollView都可以不需要了

7

准备给你贴代码,发现5楼已经给了,完全可用

9

ListView 必须设定确定高度,不然套到ScrollView中,就会出现这种问题

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明请帮看看:为什么已设置: android:layout_height="match_parent" 但List
喜欢 (0)
[1034331897@qq.com]
分享 (0)