• 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);  
             }
          } 

      

  • 相关阅读:
    记一次与用户的亲密接触
    拨开障目的叶,一览CMDB庐山真面目
    广通软件获“2016年度中国最具影响力IT运维管理软件提供商”殊荣
    CMDB三大绝招,助我站稳运维之巅
    datetime module总结
    Python time module总结
    IPMItool小结
    Python selenium 延时的几种方法
    Python 字典操作
    YUM 配置
  • 原文地址:https://www.cnblogs.com/rural/p/4158106.html
Copyright © 2020-2023  润新知