自定义控件从xml获取属性值的优雅写法

来源:互联网 发布:ajax javascript区别 编辑:程序博客网 时间:2024/06/06 04:13
   public LinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr,                               int defStyleRes) {        Properties properties = getProperties(context, attrs, defStyleAttr, defStyleRes);        setOrientation(properties.orientation);       ....    }       public static Properties getProperties(Context context, AttributeSet attrs,                int defStyleAttr, int defStyleRes) {            Properties properties = new Properties();            TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RecyclerView,                    defStyleAttr, defStyleRes);            properties.orientation = a.getInt(R.styleable.RecyclerView_android_orientation, VERTICAL);            properties.spanCount = a.getInt(R.styleable.RecyclerView_spanCount, 1);            properties.reverseLayout = a.getBoolean(R.styleable.RecyclerView_reverseLayout, false);            properties.stackFromEnd = a.getBoolean(R.styleable.RecyclerView_stackFromEnd, false);            a.recycle();            return properties;        }           public static class Properties {            /** @attr ref android.support.v7.recyclerview.R.styleable#RecyclerView_android_orientation */            public int orientation;            /** @attr ref android.support.v7.recyclerview.R.styleable#RecyclerView_spanCount */            public int spanCount;            /** @attr ref android.support.v7.recyclerview.R.styleable#RecyclerView_reverseLayout */            public boolean reverseLayout;            /** @attr ref android.support.v7.recyclerview.R.styleable#RecyclerView_stackFromEnd */            public boolean stackFromEnd;        }
0 0
原创粉丝点击