WEB开发网
开发学院手机开发Android 开发 Android.自定义控件的实现 阅读

Android.自定义控件的实现

 2010-08-20 02:00:00 来源:WEB开发网   
核心提示:R.styleable.RadioButton);this.mValue = a.getString(R.styleable.RadioButton_value);a.recycle();} catch (Exception e) {e.printStackTrace();}}public RadioButton(Co

R.styleable.RadioButton);

this.mValue = a.getString(R.styleable.RadioButton_value);

a.recycle();

} catch (Exception e) {

e.printStackTrace();

}

}

public RadioButton(Context context) {

super(context);

}

}

红色代码可以先不看。先看我们新加入的属性value,由于Android习惯属性命名以m开头。所以我们自定义控件就按照这个规则来写。不过对于 setter、getter方法来说,不需要加入m。像上面的:属性名称 mValue,setter:setValue(),getter:getValue()。当然,你也可以不按照Android的习惯来命名。

这样,我们就可以使用这个自定义控件了。而且可以给它设置一个value,加上父类的text属性。我们就可以在RadioButton中加入key- value的键值了。当然,这里面的key对应是控件的value属性,value是对应控件的text属性。完了?没有。自定义控件才刚开始了。

2、XML中引用自定义控件

在XML中加入自定义控件其实很简单。只需要在控件名字前加入包名即可。如下:

< org.kandy.view.RadioButton android:id="@id/isPayDepositTrue" fsms:value="true"

android:layout_width="wrap_content" android:layout_height="wrap_content"

android:text="@string/yes" android:textSize="18sp">

< /org.kandy.view.RadioButton>

同样,红色部分可以先不看,也不需要加入到代码中,这个时候加入会报错,请注意。

3、attrs.xml属性定义。

在我们的思想中,既然我在自定义控件中加入了一个新的属性,那么我就应该能够在xml中引用它,并对它赋初始值。我当初也是这样想的。可是却无从下手。就是这一点,折腾了我一个下午。

正解:res/values/attrs.xml中定义属性,在自定义控件中获取这个属性,然后跟自定义控件的属性相绑定。

attrs.xml如果没有,就新建一个。这里只存放自定义控件中需要的属性,在我看来,这个文件是一个中介,负责将layout/xx.xml里面的对这个变量的引用和自定义控件里面的属性绑定起来。

attrs.xml完整代码如下:

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

< resources>

上一页  1 2 3 4  下一页

Tags:Android 定义 控件

编辑录入:coldstar [复制链接] [打 印]
赞助商链接