497
技术社区[云栖]
自定义组件及其内组件大小的正确设置
https://blog.csdn.net/xiaodao1986/article/details/8481288
一、自定义组件大小的设置
不管你怎么设置,自定义组件似乎总是match_parent。我们需要覆盖onMeasure方法,并在其内正确设置组件大小。
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- //注意:为尽可能简洁本文只讨论EXACTLY和AT_MOST模式
- int mode = MeasureSpec.getMode(widthMeasureSpec);
- if(mode == MeasureSpec.AT_MOST || mode == MeasureSpec.EXACTLY) {
- this.widthMeasureSpec = widthMeasureSpec;
- this.heightMeasureSpec = heightMeasureSpec;
- int width = MeasureSpec.getSize(widthMeasureSpec);
- int height = MeasureSpec.getSize(heightMeasureSpec);
- setMeasuredDimension(width, height);
- } else if(mode == MeasureSpec.UNSPECIFIED) {
- Log.d("WOGU", "mode=UNSPECIFIED");
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- }
- }
最后更新:2017-04-04 07:03:34