美文网首页
自定义View之继承ViewGroup

自定义View之继承ViewGroup

作者: zhwei18 | 来源:发表于2019-05-08 20:30 被阅读0次

    自定义View之继承ViewGroup

    写了一个很简单的类,继承了LinearLayout,然后根据xml去实现基本组件组合,我现在的是两个TextView,上下结构。

    注意的是继承ViewGroup,会让你实现构造方法:

    1. 只有一个Context参数  -----这个是你在代码中直接new的时候调用;

    2. 除了Context,还有AttributeSet参数,AttributeSet是用来判断是否有定义一些attr,在xml中可以直接设置参数,在初始化的时候可以直接获取赋值

    比如在attr.xml里面

    <declare-styleable name="CustomMenu">

        <attr name="rightPadding" format="dimension" />

    </declare-styleable>

    其中format的值可以有下面这些值,具体自己看自己的view需求啦:

    1)  string:字符串类型;

    2)  integer:整数类型;

    3)  float:浮点型;

    4)  dimension:尺寸,后面必须跟dp、dip、px、sp等单位;

    5)  Boolean:布尔值;

    6)  reference:引用类型,传入的是某一资源的ID,必须以“@”符号开头;

    7)  color:颜色,必须是“#”符号开头;

    8)  fraction:百分比,必须是“%”符号结尾;

    9)  enum:枚举类型

    在xml布局中试用时候,要加一句:  xmlns:app="http://schemas.android.com/apk/res-auto"

    其中,app名字可以随意,在使用中要和在xml布局使用的对应即可。

    主要的方法,指定xml布局,然后接下来去初始化findview,在对view提供一些public的方法,以便外部调用:

    LayoutInflater.from(context).inflate(R.layout.name_value_view, this);

    ......

    另外:还可以通过xml进行实现一些简单的view,比如圆角,边框,实心色值,渐变色等:

    布局写在drawable下面:

    <?xml version="1.0" encoding="utf-8"?>

    <shape xmlns:android="http://schemas.android.com/apk/res/android">

        <solid android:color="#f0f0f0"/>

        <corners android:radius="6dip" />

    </shape>

    1. solid 填充色

    2. corners 圆角,可以单独设置 topRadius, left, right, bottom等

    3. stroke 边框,可以设置宽度

    4. padding,size,gradient等等

    相关文章

      网友评论

          本文标题:自定义View之继承ViewGroup

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