Note便签

1 给RecyclerView添加分割线

recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
    @Override
    public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
        super.onDraw(c, parent, state);
        Paint paint = new Paint();
        paint.setColor(Color.BLUE);
        c.drawRect(0, 0, 3000, 100, paint);
    }

    @Override
    public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
        super.onDrawOver(c, parent, state);
        Paint paint = new Paint();
        paint.setColor(Color.RED);
        c.drawRect(0, 100, 3000, 200, paint);
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        super.getItemOffsets(outRect, view, parent, state);
        outRect.set(10, 10, 10, 10);
    }

});

onDraw是绘制背景色的方法

onDrawOver是绘制前景色的方法

getItemOffsets是设置每个item偏移量的方法。可以简单的理解为:Rect.set中的四个参数为item的 marginLeft , marginTop , marginRight , marginBottom

虚线作为item分隔线,代码如下

recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
            @Override
            public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {

                final int left = parent.getPaddingLeft();
                final int right = parent.getWidth() - parent.getPaddingRight();

                final int childCount = parent.getChildCount();//得到出现在屏幕上子项的个数
                for (int i = 0; i < childCount; i++) {
                    final View child = parent.getChildAt(i);
                    //出现在屏幕上的子项个数,顶部一部分子项也算一个,底部的不算
                    final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                            .getLayoutParams();
                    //以下计算主要用来确定绘制的位置
                    final int top = child.getBottom() + params.bottomMargin;
                    //绘制虚线
                    Paint paint = new Paint();//可以用来画图形,文本与bitmap
                    paint.setStyle(Paint.Style.STROKE);//仅描边,空心
                    paint.setColor(Color.RED);
                    Path path = new Path();//线类
                    path.moveTo(left, top);//画笔的起点
                    path.lineTo(right, top);//终点位置
                    PathEffect effects = new DashPathEffect(new float[]{15, 15, 15, 15}, 5);//此处单位是像素不是dp  注意 请自行转化为dp ,DashPathEffect是将Path虚线化,第一个参数是实线与空白的长度(必须是偶数个),第二个参数表示view向左移动的距离 
                    paint.setPathEffect(effects);表示图形是线段,并且给path设置样式(效果)
                    c.drawPath(path, paint);
                }
            }
        });

LayoutParams类:用过view.getLayoutParams()的方式获取关于view布局的类,可以通过这个类来访问对应布局的各种属性。

每一次小小的滑动都运行上面的程序,重新设置虚线在屏幕中的位置。

注意:onDraw与getItemOffsets也可以做到上述效果。

 

2 搜索框:

<SearchView>   </SearchView>
SearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            //每次点击搜索按钮的时候执行
            @Override
            public boolean onQueryTextSubmit(String newText) {

                return false;
            }
            //每次搜索框中内容发生改变的时候执行
            @Override
            public boolean onQueryTextChange(String newText) {
                return true;
            }
        });

3 SpannableStringBuilder: 可以改变使用其方法setSpan方法实现字符串各种形式风格的显示。比如在原来String上加下划线、加背景色、改变字体颜色、用图片把指定的文字给替换掉。

4 RadioButton

实现RadioButton由两部分组成,也就是RadioButton和RadioGroup配合使用.RadioGroup是单选组合框,可以容纳多个RadioButton的容器.在没有RadioGroup的情况下,RadioButton可以全部都选中;当多个RadioButton被RadioGroup包含的情况下,RadioButton只可以选择一个。并用setOnCheckedChangeListener来对单选按钮进行监听

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值