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

自定义控件面试题

作者: 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