zoukankan      html  css  js  c++  java
  • Android View 上下左右四种间距的设置方法

    RecyclerView控件大家肯定不陌生,已经应用有一段时间了,最近在项目中写一个GridLayout样式的RecyclerView时需要设置,item之间左右的间距,下面是我总结的一个设置间距的方法分享给大家。

    下面是没间距的情况

     

    想要设置item之间的间距需要自己创建一个继承自RecyclerView.ItemDecoration的类

    public class RecyclerViewSpacesItemDecoration extends RecyclerView.ItemDecoration {
    
       private HashMap<String, Integer> mSpaceValueMap;
    
       public static final String TOP_DECORATION = "top_decoration";
       public static final String BOTTOM_DECORATION = "bottom_decoration";
       public static final String LEFT_DECORATION = "left_decoration";
       public static final String RIGHT_DECORATION = "right_decoration";
    ​
       public RecyclerViewSpacesItemDecoration(HashMap<String, Integer> mSpaceValueMap) {
           this.mSpaceValueMap = mSpaceValueMap;
       }
    ​
       @Override
       public void getItemOffsets(Rect outRect, View view,
                                   RecyclerView parent, RecyclerView.State state) {
           if (mSpaceValueMap.get(TOP_DECORATION) != null)
               outRect.top = mSpaceValueMap.get(TOP_DECORATION);
           if (mSpaceValueMap.get(LEFT_DECORATION) != null)
    
               outRect.left = mSpaceValueMap.get(LEFT_DECORATION);
           if (mSpaceValueMap.get(RIGHT_DECORATION) != null)
               outRect.right = mSpaceValueMap.get(RIGHT_DECORATION);
           if (mSpaceValueMap.get(BOTTOM_DECORATION) != null)
    
               outRect.bottom = mSpaceValueMap.get(BOTTOM_DECORATION);
    
       }
    
    }
    下面是 设置RecyclerView间距的关键方法
    HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();
    stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.TOP_DECORATION,50);//top间距
    
    stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION,100);//底部间距
    
    stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION,50);//左间距
    
    stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION,100);//右间距
    
    mRecyclerView.addItemDecoration(newRecyclerViewSpacesItemDecoration(stringIntegerHashMap));

    可以根据自己的实际情况去设置想要的间距,也可以去单独设置
    下面是设置间距后的效果图

  • 相关阅读:
    linux shell获取用户输入
    yii2 笔记(1)
    yii2 数据库查询
    Yii2 环境配置生产环境和测试环境
    mysql 中find_in_set()和in()用法比较
    使用js提交form表单的两种方法
    base64编码的原理及实现
    浅析HTTP/2的多路复用
    Nginx 所使用的 epoll 模型是什么?
    git代码统计
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/7436580.html
Copyright © 2011-2022 走看看