案例

在一次我写画板模块的时候,布局比较普通,但是需要子元素溢出父元素。其中一小块布局如下所示:



红色部分需要溢出,这个时候我想到了clipChildren。

clipChildren 就是说我可以不裁剪子类溢出部分。但是千万不要以为只要父类加入了该属性就有用。

起码我们可以想象到,父元素允许不裁剪,但是父元素的父元素不允许,这依然需要我们注意的。



我们需要给父元素加入clipChildren='false',且祖父也得同意,封建主义思想就是这样了。

这时我遇到一个问题,如:



蓝色部分无法响应,这是为啥呢,其实是被父元素的事件传递阻挡了。

有什么方法可以解决?

  1. 根据point 位置来判断执行事件

  2. 通过重写父元素的事件来解决

理论上着两种方法觉得可以行的通的,因为第一种就是touch的原理,第二种把阻止事件去掉不就可以吗。

这两种我都没有去使用,因为2的方法需要我去写覆盖多个父元素的事件。

第一种也过于麻烦。

解决方法


我将该部分(会溢出部分)写到了和能够容纳他的父元素同级部分,这样可以不遮挡到它的任何功能。
也许觉得同样也麻烦,但是事实上,我们需要确认的只有height,width,marign。
因为布局都是百分比,所以确认的height和width其实是解决了的。
那么就是margin,如果幸运的话,margin也是百分比的话,如果不是。
那么是在onWindowFocusChanged中定位吧。
``` java
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) eraserTool.getLayoutParams();
lp.bottomMargin=(int) (circlHeight-currentWidth);
eraserTool.setLayoutParams(lp);
```
### 结语
自己觉得这种方法也欠妥,如果有更好的方法,请在下方评论、指点。

android clipChildren 的使用与遇到的困难的更多相关文章

  1. android:clipChildren属性的作用

    该属性默认为true,这个属性需要添加到最顶层的ViewGroup,作用是控制子View是否可以超出它所在的父View设定的边界 比如ImageView设置高度100dp,而它所在的父View设置的高 ...

  2. Android开发实战(二十一):浅谈android:clipChildren属性

    实现功能: 1.APP主界面底部模块栏 2.ViewPager一屏多个界面显示 3......... 首先需要了解一下这个属性的意思 ,即 是否允许子View超出父View的返回,有两个值true . ...

  3. 【Android】神奇的android:clipChildren属性

    前言 前几天有在微博上推荐过一个博客,看他文章时发现了这个属性.有些属性不常用,但需要的时候非常有用,于是做了个例子,正好项目用到,与大家分享一下. 声明 欢迎转载,请注明出处! 博客园:http:/ ...

  4. [转]android:clipToPadding和android:clipChildren

    转自:http://www.tuicool.com/articles/32YRJrq android:clipToPadding和android:clipChildren 时间 2014-10-14 ...

  5. android:clipToPadding和android:clipChildren

    假设我们要做一个效果,界面最顶部是一个ActionBar并且是半透明的,ActionBar下面是一个ListView,在初始状态 下, ListView是top是在ActionBar的bottom位置 ...

  6. android:clipToPadding 和 android:clipChildren 解决ListView设置padding后 padding不跟随改动

    clipToPadding就是说控件的绘制区域是否在padding里面的,true的情况下如果你设置了padding那么绘制的区域就往里 缩, clipChildren是指子控件是否超过padding ...

  7. 用android:clipChildren来实现红心变大特效

    最近在看别人技术博客(http://www.cnblogs.com/over140/p/3508335.html)的时候,发现一个属性:android:clipChildren属性. 翻文档找到下面介 ...

  8. Android_神奇的android:clipChildren属性

    正文 一.效果图 看到这个图时你可以先想想如果是你,你怎么实现这个效果.马上想到用RelativeLayout?NO,NO,NO,,, 二.实现代码 <?xml version="1. ...

  9. android:clipChildren属性,子布局超出父布局;

    是否允许子View超出父View的范围,Boolean型true .false ,默认true不允许: android:clipChildren="true":如下 android ...

随机推荐

  1. Dubbo配合SpringBoot,实现接口多个实现(group)

    SpringBoot配合Dubbo,使用@Service和@Reference,group实现接口多实现 公司项目升级,需要实现springBoot + Dubbo,并支持一个接口多个实现的情况.遇到 ...

  2. 这一次,彻底理解Promise源码思想

    关于Promise的源码实现,网上有太多答案,我也看过很多资料,但都不是很明白.直到有一天我学完函数式编程之函子的概念,才对Promise源码有了更深刻的认识.今天,就让我们来重新认识一下Promis ...

  3. iOS 原生库对 https 的处理

    转载自:swift cafe 使用 NSURLSession NSURLSession 是 iOS 原生提供的网络处理库.它提供了丰富的接口以及配置选项,满足我们平时网络处理的大部分需求,同时它也支持 ...

  4. ManyToMany 字段的使用

    创建一个经典的多对多关系:一本书可以有多个作者,一个作者可以有多本书(如下,csdn复制的图片) 当进行数据迁移时,会生成三张表,了解就好 1,查询数据的操作 : 1.一本书的所有作者 b = Boo ...

  5. 前端技术之:常用webpack插件

    1.html-webpack-plugin Simplifies creation of HTML files to serve your webpack bundles.   主页地址: https ...

  6. 学习笔记64_k邻近算法

    1 .假定已知数据的各个属性值,以及其类型,例如: 电影名称 打斗镜头 接吻镜头 电影类别 m1 3 104 爱情片 m2 2 100 爱情片 m3 1 81 爱情片 m4 2 90 爱情片 w1 1 ...

  7. MVC5异步提交表单疑难杂症

    //此处必须添加,不然不能执行异步回调OnAddPortSuccess方法 <script src="~/scripts/jquery.unobtrusive-ajax.min.js& ...

  8. NOIP模拟测试2-5

    该补一下以前挖的坑了 先总结一下 第二次 T1 搜索+剪枝 #include<cstdio> #include<iostream> #define ll long long u ...

  9. 我是个sb

  10. python学习之【第七篇】:Python中的集合及其所具有的方法

    1.前言 python中的集合set与列表类似,它们最大的区别是集合内不允许出现重复元素,如果在定义时包含重复元素,会自动去重. 集合是无序的,集合中的元素必须是不可变类型.集合可以作为字典的key. ...