android中scrollview与listview共存,并且ListView自动滚动
最近发现一个问题,ScrollView与ListView共存会存在滚动的问题,ListView只显示一个多Item. 上网找了很多资料解决办法都是复制的,继承BaseAdapter写一大堆,其实没必要那么麻烦.当ListView的高度设定一定的值时,ListView同样地会显示对应的高度的Item。 因此我们可以计算出这个ListView的总高度,再将它设置到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 = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() – 1));
((MarginLayoutParams)params).setMargins(10, 10, 10, 10);
listView.setLayoutParams(params);
第二种:直接使用当前界面尺寸,稍加调整
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = getWindowManager().getDefaultDisplay().getHeight() – 30;
// Toast.makeText(this, params.height+"", 3000).show();
listView.setLayoutParams(params);
XML布局写法,请注意这里需要一个内部LinerLayout
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdge = "none"
android:background="#FFF4F4F4"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<LinearLayout
android:gravity="center_horizontal"
android:orientation="vertical"
android:background="#fff4f4f4"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:id="@+id/moreItemsListView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#FFF4F4F4"
android:dividerHeight="0.0dip"
android:fadingEdge="none"
/>
</LinearLayout>
</ScrollView>
下面就是大爷的自动滚动到列表结尾了,好一个找属性…
ListView 添加属性
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"
完工,转载请说明.木哈哈 http://30c.org
欢迎大佬支持本博客的发展 -- Donate --
本文链接:android中scrollview与listview共存,并且ListView自动滚动
转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:三十岁,谢谢!^^
分享到: | |
没有评论