您的位置:首页 > 移动开发 > Android开发

Android之在Layout中自定义View

2015-05-30 16:25 525 查看


在Layout中自定义View

经常会看到在XML文件中调用别人的View就可以显示出各种奇妙的页面

简单的学习了一下,下面说一下如何自定义一个View, 并设置背景色

// 第一步,创建一个继承自View的类

public class MyView extends View {


//  背景颜色

private int background;


// 默认背景颜色

private final int default_background = Color.rgb(66, 145, 241);


// 构造

public MyView(Context context) {

// 这里确保每一级都会被触发

this(context, null);

}


// 构造

public MyView(Context context, AttributeSet attrs) {

// 这里确保每一级都会被触发

this(context, attrs, R.attr.MyViewStyle);

}


// 构造

public MyView(Context context, AttributeSet attrs, int defStyle) {

// 执行父类构造

super(context, attrs, defStyle);

// 初始化

final TypedArray attributes = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyView, defStyle, 0);

// 获取设置的背景颜色

background = attributes.getColor(R.styleable.MyView_background, default_background);

// 设置

this.setBackgroundColor(background);

}


}


// 第二步,在XML-Layout中使用

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

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

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/guide_0"

android:orientation="vertical">


// 这里使用的就是自定义的View

<com.example.nljb.surpass.MyView

// 可以使用自定义的View的设置参数

app:background="#ffff5633"

// 可以使用继承自View的设置参数

android:layout_width="match_parent"

android:layout_height="50dp"/>


</RelativeLayout>


// 第三步,自定义View的参数(第一步已经讲了如何使用)

// values/attrs

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

<resources>


<declare-styleable name="MyView">

// format 类型有很多 ...

<attr name="background" format="color"/>

// <attr name="..." format="integer"/>

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

// <attr name="..." format="enum">

//  <enum name="..." value="0"/>

//  <enum name="..." value="1"/>

// </attr>

// <attr name="..." format="string"/>

// <attr name="..." format="boolean"/>

...

</declare-styleable>


<declare-styleable name="Themes">

<attr name="MyViewStyle" format="reference"/>

</declare-styleable>

</resources>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: