android代码设置控件宽高无效,Android自定义控件无法通过代码修改大小、高宽,setMinimumHeight无效的问题...

首先在理解我为什么这么写之前,请阅读一篇前人的文章:http://blog..net/a396901990/article/details/36475213

这篇文章详细的分析了一下onMeasure函数的源码和用法。通过阅读这篇文章我才得到了启示。再次感谢一下这个博主。

进入正题~

随着开发的深入越来越多的控件需要自己去写去画,也就是我们常说的自定义控件。但是相信很多人都碰到过自定义控件在布局上或者是显示大小上经常碰到一些奇奇怪怪的问题。这篇文章所描述和解决的问题只是其中之一。

问题:自定义的控件,如果在layout里面写好了固定宽高的话,我在代码里想要通过setMinimumHeight或者setMinimumWidth方法进行修改时无效,没有任何变化。

解决办法:

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

int height = MeasureSpec.getSize(heightMeasureSpec);

heightMeasureSpec = MeasureSpec.makeMeasureSpec(height,MeasureSpec.UNSPECIFIED);

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

}重载自定义view的onMeasure方法。比如我这个控件我只需要可以动态在代码里设置高度,那么我只要对他的高度做处理就行了。当他的高度被设置上MeasureSpec.UNSPECIFIED时,就意味着他的大小将不受任何约束,也就是意味着你在代码里动态修改他变成了可能,原先我猜测应该是被layout里面设置的高度给限制住了。那么我改用这种模式,就解除了原来默认限制大小的模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值