android clipChildren 的使用与遇到的困难
案例
在一次我写画板模块的时候,布局比较普通,但是需要子元素溢出父元素。其中一小块布局如下所示:

红色部分需要溢出,这个时候我想到了clipChildren。
clipChildren 就是说我可以不裁剪子类溢出部分。但是千万不要以为只要父类加入了该属性就有用。
起码我们可以想象到,父元素允许不裁剪,但是父元素的父元素不允许,这依然需要我们注意的。

我们需要给父元素加入clipChildren='false',且祖父也得同意,封建主义思想就是这样了。
这时我遇到一个问题,如:

蓝色部分无法响应,这是为啥呢,其实是被父元素的事件传递阻挡了。
有什么方法可以解决?
根据point 位置来判断执行事件
通过重写父元素的事件来解决
理论上着两种方法觉得可以行的通的,因为第一种就是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 的使用与遇到的困难的更多相关文章
- android:clipChildren属性的作用
该属性默认为true,这个属性需要添加到最顶层的ViewGroup,作用是控制子View是否可以超出它所在的父View设定的边界 比如ImageView设置高度100dp,而它所在的父View设置的高 ...
- Android开发实战(二十一):浅谈android:clipChildren属性
实现功能: 1.APP主界面底部模块栏 2.ViewPager一屏多个界面显示 3......... 首先需要了解一下这个属性的意思 ,即 是否允许子View超出父View的返回,有两个值true . ...
- 【Android】神奇的android:clipChildren属性
前言 前几天有在微博上推荐过一个博客,看他文章时发现了这个属性.有些属性不常用,但需要的时候非常有用,于是做了个例子,正好项目用到,与大家分享一下. 声明 欢迎转载,请注明出处! 博客园:http:/ ...
- [转]android:clipToPadding和android:clipChildren
转自:http://www.tuicool.com/articles/32YRJrq android:clipToPadding和android:clipChildren 时间 2014-10-14 ...
- android:clipToPadding和android:clipChildren
假设我们要做一个效果,界面最顶部是一个ActionBar并且是半透明的,ActionBar下面是一个ListView,在初始状态 下, ListView是top是在ActionBar的bottom位置 ...
- android:clipToPadding 和 android:clipChildren 解决ListView设置padding后 padding不跟随改动
clipToPadding就是说控件的绘制区域是否在padding里面的,true的情况下如果你设置了padding那么绘制的区域就往里 缩, clipChildren是指子控件是否超过padding ...
- 用android:clipChildren来实现红心变大特效
最近在看别人技术博客(http://www.cnblogs.com/over140/p/3508335.html)的时候,发现一个属性:android:clipChildren属性. 翻文档找到下面介 ...
- Android_神奇的android:clipChildren属性
正文 一.效果图 看到这个图时你可以先想想如果是你,你怎么实现这个效果.马上想到用RelativeLayout?NO,NO,NO,,, 二.实现代码 <?xml version="1. ...
- android:clipChildren属性,子布局超出父布局;
是否允许子View超出父View的范围,Boolean型true .false ,默认true不允许: android:clipChildren="true":如下 android ...
随机推荐
- 设计模式C++描述----07.建造者(Builder)模式
一. 概述 Builder 模式要解决的问题是:当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成),我们要要复杂对象的创建过程和这个对象的表示(展示)分离开 来,这样做的好处就是通过一步 ...
- 热门开源网关的性能对比:Goku > Kong > Tyk
不多说,先展示最后的性能测试结果 我们将Goku与市场上的其他同类热门产品进行比较,使用相同的环境和条件,测试以下产品:Goku.Kong.Tyk.简单介绍下, Goku API Gateway (中 ...
- Shiro笔记---身份验证
1.shiro有哪些主要功能 2.搭建shiro环境(*) idea2018.2.maven3.5.4.jdk1.8 项目结构: pom.xml: <dependencies> < ...
- Mybaits 源码解析 (八)----- 全网最详细,没有之一:结果集 ResultSet 自动映射成实体类对象(上篇)
上一篇文章我们已经将SQL发送到了数据库,并返回了ResultSet,接下来就是将结果集 ResultSet 自动映射成实体类对象.这样使用者就无需再手动操作结果集,并将数据填充到实体类对象中.这可大 ...
- numpy.array 基本操作
import numpy as np np.random.seed(0) x = np.arange(10) x """ array([0, 1, 2, 3, 4, 5, ...
- 阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费
背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝 ...
- 使用Typescript重构axios(十二)——增加参数
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
- 最新JetBrains PyCharm 使用教程--安装教程(一)
安装过程 Pycharm 激活码 license server选项里边输入:http://intellij.mandroid.cn/
- .net core Json字符串的序列化和反序列化通用类源码,并模拟了10万数据对比DataContractJsonSerializer和Newtonsoft性能
我们在开发中Json传输数据日益普遍,有很多关于Json字符串的序列化和反序列化的文章大多都告诉你怎么用,但是却不会告诉你用什么更高效.因为有太多选择,人们往往会陷入选择难题. 相比.NET Fram ...
- fatal: Authentication failed for 'http://git
git pull 出现 fatal: Authentication failed for 'http://git... git config --system --unset credential.h ...