InputLayout

输入框布局

在涉及注册登录等逻辑,往往会有输入框布局,不同的项目往往UI样式区别非常大,例如如下几种

Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png

总结起来就是, UI样式千变万化, 但是功能上,都是包含输入框 和 功能按钮, 一般输入框只有一个, 但是功能按不止有一个, 功能上只有,切换密码可见性、清空功能;

第一次思考

我本打算做 许多UI模板,然后用布局工厂去造出来不同的布局, 这样就能适用于实际开发场景,但是问题来了,每写一种Ui,都要在工厂里面配置一次,这样还是非常不好的。

第二次思考

我记得子View使用的属性,可以来于父控件的 LayoutParams 所以我们可以写一个自定义的相对布局、帧布局、线性布局去替换系统的,那么问题又来了, 相同的代码,我们需要写3次,所以我们需要引入一些设计模式;

先看用法

Paste_Image.png

InputRelativeLayout

public class InputRelativeLayout extends RelativeLayout {
    private InputLayoutHelper inputLayoutHelper;

    public InputRelativeLayout(Context context) {
        super(context);
        initView();
    }

    public InputRelativeLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView();
    }

    private void initView() {
        setTag("ignore");
        inputLayoutHelper = new InputLayoutHelper();
    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
        inputLayoutHelper.onFinishInflate(this);
    }

    public static class LayoutParams extends RelativeLayout.LayoutParams implements IParamsProxy {
        private ParamsProxy paramsProxy;

        public LayoutParams(Context context, AttributeSet attrs) {
            super(context, attrs);
            paramsProxy = new ParamsProxy().obtainStyledAttributes(context, attrs);
        }

        @Override
        public IParams getInputParams() {
            return paramsProxy;
        }
    }

    @Override
    public RelativeLayout.LayoutParams generateLayoutParams(AttributeSet attrs) {
        return new LayoutParams(getContext(), attrs);
    }

}

源码 InputLayout

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,094评论 25 709
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,680评论 1 92
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,194评论 4 61
  • 前几天妈妈问我,表弟进了微信里的家族群,可不可以也把我拉进群里。一开始我是有所顾虑的,马上在脑海中假设各种可能发生...
    远夏Natsu阅读 4,073评论 0 0
  • 空气清新,温度恰好能温暖心窝,微风划过斑斓的挎包,吹出青春的旋律。 感谢自己今天没有虚度时光。 明天的阳光,你在等...
    CHL_9b4d阅读 734评论 0 0