Android RecyclerView实现水平、垂直方向分割线

Android RecyclerView实现水平、垂直方向分割线,第1张

概述androidRecyclerView不像过去的ListView那样随意的设置水平方向分割线,如果要实现RecyclerView的水平/垂直分割线,则需要继承自RecyclerView.ItemDecoration重写getItemOffsets方法,从而增加水平/垂直分割线。

androID RecyclerVIEw不像过去的ListVIEw那样随意的设置水平方向的分割线,如果要实现RecyclerVIEw的水平/垂直分割线,则需要继承自RecyclerVIEw.Itemdecoration重写getItemOffsets方法,从而增加水平/垂直分割线。

写一个例子。

MainActivity.Java:

package zhangphil.app;import androID.content.Context;import androID.graphics.color;import androID.support.v7.app.AppCompatActivity;import androID.os.Bundle;import androID.support.v7.Widget.RecyclerVIEw;import androID.support.v7.Widget.StaggeredGrIDLayoutManager;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.TextVIEw;public class MainActivity extends AppCompatActivity {  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    RecyclerVIEw mRecyclerVIEw = (RecyclerVIEw) findVIEwByID(R.ID.recyclerVIEw);    // 两列    int spanCount = 2;    // StaggeredGrIDLayoutManager管理RecyclerVIEw的布局。    StaggeredGrIDLayoutManager mLayoutManager = new StaggeredGrIDLayoutManager(spanCount,StaggeredGrIDLayoutManager.VERTICAL);    mRecyclerVIEw.setLayoutManager(mLayoutManager);    //为RecyclerVIEw增加分割线,水平和垂直方向都有。增加分割线值比如为32。    RecyclerVIEwItemdecoration decoration = new RecyclerVIEwItemdecoration(32);    mRecyclerVIEw.addItemdecoration(decoration);    RecyclerVIEwAdapter mAdapter = new RecyclerVIEwAdapter(this);    mRecyclerVIEw.setAdapter(mAdapter);  }  private class ItemVIEwHolder extends RecyclerVIEw.VIEwHolder {    private TextVIEw text;    public ItemVIEwHolder(VIEw itemVIEw) {      super(itemVIEw);      text = (TextVIEw) itemVIEw.findVIEwByID(androID.R.ID.text1);      text.setTextcolor(color.WHITE);    }  }  public class RecyclerVIEwAdapter extends RecyclerVIEw.Adapter<ItemVIEwHolder> {    private Context context;    public RecyclerVIEwAdapter(Context context) {      super();      this.context = context;    }    @OverrIDe    public ItemVIEwHolder onCreateVIEwHolder(VIEwGroup vIEwGroup,int vIEwType) {      VIEw vIEw = VIEw.inflate(context,androID.R.layout.simple_List_item_1,null);      vIEw.setBackgroundcolor(color.RED);      ItemVIEwHolder holder = new ItemVIEwHolder(vIEw);      return holder;    }    @OverrIDe    public voID onBindVIEwHolder(ItemVIEwHolder vIEwHolder,int pos) {      vIEwHolder.text.setText(String.valueOf(pos));    }    @OverrIDe    public int getItemCount() {      return 15;    }  }}

布局文件,很简单,就放一个RecyclerVIEw,注意背景颜色的设置:

<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"  androID:layout_wIDth="match_parent"  androID:layout_height="match_parent"  androID:background="@androID:color/holo_orange_light">  <androID.support.v7.Widget.RecyclerVIEw    androID:ID="@+ID/recyclerVIEw"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent">  </androID.support.v7.Widget.RecyclerVIEw></relativeLayout>

最关键的RecyclerVIEwItemdecoration.java:

package zhangphil.app;/** * Created by Phil on 2016/10/8. */import androID.graphics.Rect;import androID.support.v7.Widget.RecyclerVIEw;import androID.vIEw.VIEw;/** * 为RecyclerVIEw增加间距 * 预设2列,如果是3列,则左右值不同 */public class RecyclerVIEwItemdecoration extends RecyclerVIEw.Itemdecoration {  private int space = 0;  private int pos;  public RecyclerVIEwItemdecoration(int space) {    this.space = space;  }  @OverrIDe  public voID getItemOffsets(Rect outRect,VIEw vIEw,RecyclerVIEw parent,RecyclerVIEw.State state) {    outRect.top = space;    //该VIEw在整个RecyclerVIEw中位置。    pos = parent.getChildAdapterposition(vIEw);    //取模    //两列的左边一列    if (pos % 2 == 0) {      outRect.left = space;      outRect.right = space / 2;    }    //两列的右边一列    if (pos % 2 == 1) {      outRect.left = space / 2;      outRect.right = space;    }  }}

代码运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android RecyclerView实现水平、垂直方向分割线全部内容,希望文章能够帮你解决Android RecyclerView实现水平、垂直方向分割线所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1145693.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存