ScrollView中滑动控件
来源:互联网 发布:小米4c可以4g网络吗 编辑:程序博客网 时间:2024/05/22 10:47
场景
ScrollView中嵌套滑动控件。ListView与GridView仅显第一Item,RecyclerView滑动冲突。
解决
ListView与GridView
import android.view.View;import android.view.ViewGroup;import android.widget.GridView;import android.widget.ListAdapter;import android.widget.ListView;public class GetLGViewHeight { /* * 动获ListView高 * */ public 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); } /* * 动获GridView高 * */ public static void setGridViewHeightBasedOnChildren(GridView gridView) { // 获GridView之adapter ListAdapter listAdapter = gridView.getAdapter(); if (listAdapter == null) { return; } /* * 固定列宽,列数 * 动获列数 * int col = gridView.getNumColumns(); * */ int col = 5; int totalHeight = 0; // i每加gridView.getNumColumns(),相当listAdapter.getCount()小于等于gridView.getNumColumns()时循环一次,计算一次item高 // listAdapter.getCount()小于等于二倍gridView.getNumColumns()时计算两次高相加 for (int i = 0; i < listAdapter.getCount(); i += col) { // 获gridView每一item View listItem = listAdapter.getView(i, null, gridView); listItem.measure(0, 0); // 获item高和 totalHeight += listItem.getMeasuredHeight(); } // 获gridView布局参数 ViewGroup.LayoutParams params = gridView.getLayoutParams(); // 设高 params.height = totalHeight; // 设margin /*((ViewGroup.MarginLayoutParams) params).setMargins(6, 12, 6, 12);*/ // 设参数 gridView.setLayoutParams(params); }}
RecyclerView
package util;import android.content.Context;import android.support.v7.widget.GridLayoutManager;import android.util.AttributeSet;/** * Created on 2017/11/19 0019. * * @desc custom gridManager */public class MyGridLayoutManager extends GridLayoutManager { private boolean scrollEnable = true; public MyGridLayoutManager(Context context, int spanCount) { super(context, spanCount); } public MyGridLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } public MyGridLayoutManager(Context context, int spanCount, int orientation, boolean reverseLayout) { super(context, spanCount, orientation, reverseLayout); } public void setScrollEnable(boolean flag) { this.scrollEnable = flag; } @Override public boolean canScrollVertically() { return scrollEnable && super.canScrollVertically(); }}
滑动解决后偶现RecyclerView于安卓6.0显示不全,高权重怎么设仅显一部分。解决方法在RecyclerView外用一RelativeLayout且属性android:descendantFocusability="blocksDescendants"
包括。
阅读全文
0 0
- ScrollView中滑动控件
- ScrollView 中嵌入ListView 控件 滑动ListView
- scrollView滑动控件
- 禁止ScrollView中控件长度发生变化自动滑动
- 用scrollview控件取消滑动
- ScrollView中加载WebView造成ScrollView滑动
- Android中scrollview滑动监测
- 计算ScrollView控件的滑动距离
- android scrollview滑动时悬浮部分控件
- IOS ScrollView 子控件滑动手势冲突
- scrollview拦截子控件的滑动
- ScrollView监听滑动到哪个子控件
- 解决滑动控件与ScrollView冲突
- 根据Scrollview滑动情况,设置控件透明度
- 根据Scrollview滑动情况,设置控件透明度
- TimePicker在ScrollView中滑动冲突的解决方法(更新适用于全控件的方法)
- ScrollView中若嵌套有滑动的控件(如:WebView,ListView或GridView)焦点问题
- TimePicker在ScrollView中滑动冲突的解决方法(更新适用于全控件的方法)
- mysql如何在命令行创建数据库
- 【shiro】入门程序
- Linux常用命令
- 数据结构与算法--栈、队列(队列)
- Python之路【第十五篇】:Web框架
- ScrollView中滑动控件
- 程序员如何转型项目经理?
- jQuery,JQ显示与隐藏
- Python之路【第十六篇】:Django【基础篇】
- Python输出当前时间
- vue+cropperjs实现图片剪裁,上传七牛云
- OSPF邻接建立状态--Smallbaal的博客
- 安装percona 5.7
- 史上最强Java学习路线(详解)