美文网首页
自定义控件面试题

自定义控件面试题

作者: bruce1990 | 来源:发表于2020-03-30 21:49 被阅读0次

    最近在面试的时候被问到怎么在LinearLayout下面设计一个子控件,在显示完全第二个子控件的前提下。设计的子控件需要占满控件。起初的时候我一直陷入到如何去测量第二个控件的思路上,后面想想LinearLayout不是有weight的支持吗,只需要将控件设置weight,管你宽度怎么玩都可以满足需求啊。

    public class WrapView extends View {
        public WrapView(Context context, AttributeSet attrs) {
            super(context, attrs);
    
        }
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            ViewGroup.LayoutParams lp = getLayoutParams();
            setLayoutParams(new LinearLayout.LayoutParams(lp.width,lp.height,1.0f));//设置weight
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    
    
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            canvas.drawColor(Color.RED);
        }
    }
    

    话说回来这道题作为自定义控件面试来问,其实不太合适。本身这个东西用ViewGroup来解决才是真的严格意义上对自定义控件的考察。因为子View只需要在xml中设置weight就能达到需求,整个自定义出来也没啥意义。其实面试官面试能面出面试者的自定义控件的能力即可,没必要玩这些。

    相关文章

      网友评论

          本文标题:自定义控件面试题

          本文链接:https://www.haomeiwen.com/subject/yzpbuhtx.html