Android ListView


  1. 仿Ios listview具有弹力拉伸效果

    重写listview中overScrollBy()方法,修改maxOverScrollY为自己当前设定的值。

    /**
     * 
     * Description:仿ios ListView有弹力拉伸效果
     * 
     * @author YangDODO
     * 
     */
    public class FlexibleListView extends ListView {
    
        private static int mMaxOverDistance = 50;// 拉伸距离
    
        public FlexibleListView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            initView(context);
        }
    
        public FlexibleListView(Context context, AttributeSet attrs) {
            super(context, attrs);
            initView(context);
        }
    
        public FlexibleListView(Context context) {
            super(context);
            initView(context);
        }
    
        private void initView(Context context) {
            DisplayMetrics metrics = context.getResources().getDisplayMetrics();
            float density = metrics.density;
            mMaxOverDistance = (int) (density * mMaxOverDistance);
        }
    
        @Override
        protected boolean overScrollBy(int deltaX, int deltaY, int scrollX,
                int scrollY, int scrollRangeX, int scrollRangeY,
                int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
            return super.overScrollBy(deltaX, deltaY, scrollX, scrollY,
                    scrollRangeX, scrollRangeY, maxOverScrollX, mMaxOverDistance,
                    isTouchEvent);
        }

  2. 解决scrollview嵌套ListView问题
           @Override
            protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
                    int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
                                    MeasureSpec.AT_MOST);
    
                    super.onMeasure(widthMeasureSpec, expandSpec);
            }

  3. 如何让多个android listview同时使用一个滚动条?设置listview高度
      /**
         * 设置listview高度,注意listview子项必须为LinearLayout才能调用该方法
         * @param listview listview
         * 
         */
        public static void  setListViewHeight(ListView listview){  
            int totalHeight = 0;    
           ListAdapter adapter= listview.getAdapter();
           if(null != adapter){
            for (int i = 0; i <adapter.getCount(); i++) {    
            View listItem = adapter.getView(i, null, listview);
                if (null != listItem) {
                listItem.measure(0, 0);//注意listview子项必须为LinearLayout才能调用该方法
                totalHeight += listItem.getMeasuredHeight();
                }
            }    
                
            ViewGroup.LayoutParams params = listview.getLayoutParams();    
            params.height = totalHeight + (listview.getDividerHeight() * (listview.getCount() - 1));    
            listview.setLayoutParams(params);  
           }
        } 

  

优质内容筛选与推荐>>
1、2018暑假周进度总结01
2、IDEA的快捷键、常用技巧
3、MongoDB与MySQL常用操作语句对照
4、socket.io笔记三之子命名空间的socket连接
5、REPORT bom.


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号