国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android自定義上下左右間隔線

2019-10-22 18:09:46
字體:
來源:轉載
供稿:網(wǎng)友

本文實例為大家分享了Android自定義SpaceItemDecoration分割線的具體代碼,供大家參考,具體內容如下

此線是在RecyclerView中的GridlayoutManager中使用的 效果圖如下: 

Android,間隔線

/** * author: Y_Qing * date: 2018/5/7 */public class SpaceItemDecoration extends RecyclerView.ItemDecoration {  private int space;  Paint mPaint;  public SpaceItemDecoration(int space) {    this.space = space;    mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);    mPaint.setColor(0xffededed);    mPaint.setStyle(Paint.Style.FILL);  }  private static final int HORIZONTAL = 355;  @Override  public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {    int itemViewType = parent.getLayoutManager().getItemViewType(view);    if (itemViewType == HORIZONTAL) { //根據(jù)ViewType類型來判斷是否展示線      outRect.bottom = space;      if (parent.getChildLayoutPosition(view) % 2 == 0) {        outRect.right = space / 2;        outRect.left = space;      } else {        outRect.right = space;        outRect.left = space / 2;      }    }  }  @Override  public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {    c.save();    if (parent.getLayoutManager() instanceof GridLayoutManager) {      if ((((GridLayoutManager) parent.getLayoutManager())).getSpanCount() == 2) {        draw(c, parent);      }    }    c.restore();  }  //繪制橫向 item 分割線  private void draw(Canvas canvas, RecyclerView parent) {    int childSize = parent.getChildCount();    for (int i = 0; i < childSize; i++) {      View child = parent.getChildAt(i);      RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) child.getLayoutParams();      int left = child.getLeft();      int right = child.getRight();      int top = child.getBottom() + layoutParams.bottomMargin;      int bottom = top + space;      if (mPaint != null) {        canvas.drawRect(left, top, right, bottom, mPaint);//繪制圖片下放的水平線      }      if (parent.getChildLayoutPosition(child) % 2 == 0) {        canvas.drawRect(0, child.getTop(), left, child.getBottom() + space, mPaint);//繪制左邊圖片的左間線      }      top = child.getTop();      bottom = child.getBottom() + space;      left = child.getRight() + layoutParams.rightMargin;      right = left + space;      if (mPaint != null) {        canvas.drawRect(left, top, right, bottom, mPaint);//繪制圖片的右間線      }    }  }}

使用方法下:

private void initSpaceLine() {    if (decor == null) {      decor = new SpaceItemDecoration(ViewUtil.dp2px(5));      recycleListView.addItemDecoration(decor);    }  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 镇赉县| 上饶市| 盱眙县| 邓州市| 华亭县| 平乡县| 盱眙县| 仁寿县| 黎川县| 桐乡市| 通辽市| 青海省| 财经| 武义县| 醴陵市| 湾仔区| 内江市| 胶南市| 抚顺县| 偏关县| 铜鼓县| 喀喇沁旗| 铜梁县| 施甸县| 辰溪县| 林芝县| 浦城县| 房山区| 清水河县| 赣榆县| 甘谷县| 沅陵县| 绵阳市| 商城县| 盱眙县| 微博| 木里| 江口县| 博野县| 洪湖市| 甘孜|