子布局延伸出父布局范围

前言

之前项目有个需求,说是一个日历控件(https://blog.csdn.net/Demo_Jin/article/details/89344398),他的title需要占满整个屏宽,但是下面的日期需要有左右的边距,因为title和下面内容都是同一个RecycleViewAdapter的,这个需求着实让我愁了好久,后面发现原来可以设置子布局延伸出父布局的方法,特此记录

修正前-未设置RecycleView padding

修正前-设置RecycleView padding

修正后

步骤

1.首先给整体RecycleView设置padding,并设置两个属性

mDateView.setPadding(UIUtils.dp2px(mContext, 15), 0, UIUtils.dp2px(mContext, 15) ,0);
mDateView.setClipToPadding(false);
mDateView.setClipChildren(false);

这两个属性默认是true,设置为false之后子view就可以延伸出父布局padding之外了

2.然后设置子view的margin,本来以为还要获取什么parent宽度、left、right之类的,结果其实很简单,给margin设两个负数就可以了,这里padding设置的是左右各15dp,所以子view的margin设置左右各-15dp即可

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/tv_title"
    android:layout_width="match_parent"
    android:layout_height="32dp"

    android:layout_marginLeft="-15dp"
    android:layout_marginRight="-15dp"

    android:background="@color/colorTitle"
    android:gravity="center"
    android:textColor="#4F5160"
    android:textSize="14sp"
    tools:text="2018年09月" />

3.然后那个悬停框就更简单了 ,原来画的时候就是代入parent padding的,去掉即可

        RectF rect = new RectF(
                0,
                parent.getPaddingTop(),
                (parent.getRight()),
                (parent.getPaddingTop() + mTop));

结尾

以上就是这个小坑的爬坑过程,本来还打算自定义RecycleView重写那三大方法去搞,好在换个角度就解决了~

对这个日历控件感兴趣的请移步:https://blog.csdn.net/Demo_Jin/article/details/89344398

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值