zoukankan      html  css  js  c++  java
  • 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);  
             }
          } 

      

  • 相关阅读:
    sqlserver 日期格式化
    CentOS7系统 ansible自动化部署多台服务器部署
    Linux运维跳槽40道面试精华题
    Linux下SVN创建新的项目
    日志切割
    SVN的安装和启动SVN的安装
    jenkins+Gitlab+maven+tomcat实现自动集成、打包、部署
    nginx启动脚本
    nginx如何调用php
    redis常用命令
  • 原文地址:https://www.cnblogs.com/rural/p/4158106.html
Copyright © 2011-2022 走看看