处理ScrollView与listview,gridview的问题
2014-12-23 17:06
148 查看
写一个方法继承ScrollView
与ListView的处理
写一个方法
public class ListViewUtil {
public static void setListViewHeightBasedOnChildren(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));
listView.setLayoutParams(params);
}
}
在所需的xml里
<com.xmx.jz.util.ScrollViewExtend
android:id="@+id/soft_home_page_scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:overScrollMode="never"
android:visibility="gone"
android:layout_below="@id/soft3_gridView1"
android:scrollbars="none">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:overScrollMode="never"
>
<ListView
android:id="@+id/software3_listview_1"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:paddingTop="5dp"
android:scrollbars="none"
android:divider="@color/layout_bg"
android:dividerHeight="4dp"
/>
</LinearLayout>
</com.xmx.jz.util.ScrollViewExtend>
在所需的activity里
获得 ScrollViewExtend 的id 然后在listview.setAdapter();后面添加
ListViewUtil.setListViewHeightBasedOnChildren(listview);
scrollviewextend .smoothScrollTo(0, 0); 就OK
GridView的问题
也是写一个方法 继承 GridView
public class MyGridView extends GridView{
public MyGridView(Context context) {
super(context);
}
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
/**
* 解决ScrollView嵌套GridView后,GridView显示不全问题
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
然后在xml里写
<类所在的包名.MyGridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="2"
>
</类所在的包名.MyGridView>
OK 感觉好啰嗦!!!
public class ScrollViewExtend extends ScrollView{ // 滑动距离及坐标 private float xDistance, yDistance, xLast, yLast; public ScrollViewExtend(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: xDistance = yDistance = 0f; xLast = ev.getX(); yLast = ev.getY(); break; case MotionEvent.ACTION_MOVE: final float curX = ev.getX(); final float curY = ev.getY(); xDistance += Math.abs(curX - xLast); yDistance += Math.abs(curY - yLast); xLast = curX; yLast = curY; if(xDistance > yDistance){ return false; } } return super.onInterceptTouchEvent(ev); }
与ListView的处理
写一个方法
public class ListViewUtil {
public static void setListViewHeightBasedOnChildren(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));
listView.setLayoutParams(params);
}
}
在所需的xml里
<com.xmx.jz.util.ScrollViewExtend
android:id="@+id/soft_home_page_scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:overScrollMode="never"
android:visibility="gone"
android:layout_below="@id/soft3_gridView1"
android:scrollbars="none">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:overScrollMode="never"
>
<ListView
android:id="@+id/software3_listview_1"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:paddingTop="5dp"
android:scrollbars="none"
android:divider="@color/layout_bg"
android:dividerHeight="4dp"
/>
</LinearLayout>
</com.xmx.jz.util.ScrollViewExtend>
在所需的activity里
获得 ScrollViewExtend 的id 然后在listview.setAdapter();后面添加
ListViewUtil.setListViewHeightBasedOnChildren(listview);
scrollviewextend .smoothScrollTo(0, 0); 就OK
GridView的问题
也是写一个方法 继承 GridView
public class MyGridView extends GridView{
public MyGridView(Context context) {
super(context);
}
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
/**
* 解决ScrollView嵌套GridView后,GridView显示不全问题
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
然后在xml里写
<类所在的包名.MyGridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="2"
>
</类所在的包名.MyGridView>
OK 感觉好啰嗦!!!
相关文章推荐
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- [android] ScrollView 嵌套 ListView GridView问题
- Android 解决ScrollView嵌入ListView | GridView | ScrollView显示问题
- 完美解决ListView, GridView在ScrollView显示不完全问题
- 解决ScrollView下嵌套ListView或Gridview进页面不在顶部的问题
- Listview或者ExpandableListView以及GridView与ScrollView冲突问题的解决
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- ScrollView中嵌套GridView,Listview不显示全部item的问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- ScrollView中若嵌套有滑动的控件(如:WebView,ListView或GridView)时的焦点问题
- ScrollView中嵌套GridView,Listview不显示全部item的问题
- scrollview同时嵌套listview和gridview 显示高度问题【只显示一行】
- 解决ScrollView下嵌套ListView、GridView显示不全的问题
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- ScorllView 嵌套gridView,listView问题处理
- ListView或GridView与ScrollView共存,高度显示问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题
- ScrollView嵌套ListView,gridview的问题
- 解决ScrollView下嵌套ListView、GridView显示不全的问题(冲突)