前言
之前项目有个需求,说是一个日历控件(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