案例

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



红色部分需要溢出,这个时候我想到了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. 设置和获取html里面的内容.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. ORM之单表操作

    ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...

  3. TensorFlow深度学习基础与应用实战高清视频教程

    TensorFlow深度学习基础与应用实战高清视频教程,适合Python C++ C#视觉应用开发者,基于TensorFlow深度学习框架,讲解TensorFlow基础.图像分类.目标检测训练与测试以 ...

  4. 解决SAP740 GUI 搜索帮助(F4)回填值乱码的问题

    SAP 740客户端引入了搜索帮助增强功能,并且默认是开启该功能的,在带有F4搜索帮助的字段输入框中输入字段的前两个字符,可以自动以下拉框的方式带出包含包含所输入字符的条目,从而实现快速的输入帮助,如 ...

  5. 27 个问题突破所有重难点,BroadcastReceiver 、ContentProvider 知多少?「建议收藏」

    前言 距离上次更新过去一周多了,打破了之前两到三天一更的惯例,主要还是这部分内容太多了. 原先想把 BroadcastReceiver .ContentProvider 分两篇来总结,但的确,这两大组 ...

  6. API gateway 之 kong 基本操作 (三)

    一.演示环境准备 1.nginx配置 [root@nginx conf.d]# pwd /etc/nginx/conf.d [root@nginx conf.d]# ls conf_bak kong_ ...

  7. 《Effective Java》 读书笔记(一) 使用静态构造方法代替传统构造函数

    对象的创建与销毁 ITEM1 使用静态工厂方法代替构造函数 传统的新建一个对象的方法是通过构造函数: Foo foo =new Foo(); 一个类也可以提供一个静态方法产生一个对象: Boolean ...

  8. python学习之【第六篇】:Python中的字典及其所具有的方法

    1.前言 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,因此,字典的key必须是可哈 ...

  9. 通俗易懂了解Vue组件的生命周期

    1.前言 在使用vue2.0进行日常开发中,我们总有这样的需求,我就想在页面刚一加载出这个表格组件时就发送请求去后台拉取数据,亦或者我想在组件加载前显示个loading图,当组件加载出来就让这个loa ...

  10. P4409 [ZJOI2006]皇帝的烦恼(20190922B)(乱搞)

    考场历程十分艰辛啊... 第一题没切掉,还浪费了很长时间,就是一个裸的最小生成树,但是因为可恶的distance为关键字莫名其妙查错了10min.... 本题先乱搞了一下,过了样例 然后看第三题,可写 ...