自定义View之继承ViewGroup

2019-05-08  本文已影响0人  zhwei18

自定义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等等

上一篇下一篇

猜你喜欢

热点阅读