Android开发学习笔记-自定义控件的属性

若想让自定义控件变得更加方便灵活,则就需要对控件进行定义属性,使其用起来更方便。

下面是自定义控件属性的方法

1、添加attrs.xml,内容格式样式可以参考sdk\platforms\android-10\data\res\values\attrs.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <declare-styleable name="CompoundButton">

        <attr name="desc_title" format="string" />
        <attr name="desc_on" format="string"/>
        <attr name="desc_off" format="string"/>
    </declare-styleable>
</resources>

2、在布局文件中引用命名空间,并设置自定义属性值,其中命名控件后面的为应用程序包名

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:frank="http://schemas.android.com/apk/res/com.frank.mobilesafe"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_maintitle"
        android:layout_width="match_parent"
        android:layout_height="55dp"
        android:background="#8866ff00"
        android:gravity="center"
        android:text="设置中心"
        android:textSize="22sp" />

   <com.frank.mobilesafe.ui.SettingItemView
       frank:desc_title="有新版本升级控制"
       frank:desc_on="有新版本则进行升级"
       frank:desc_off="不进行升级"
       android:id="@+id/siv_update"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       />
</LinearLayout>

3、在自定义控件的类里面的构造方法中对属性值进行获取或者设置。

public SettingItemView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView(context);
        String myNamespace = "http://schemas.android.com/apk/res/com.frank.mobilesafe";
        str_desc_title = attrs.getAttributeValue(myNamespace,
                "desc_title");
        str_desc_on = attrs.getAttributeValue(myNamespace,
                "desc_on");
        str_desc_off = attrs.getAttributeValue(myNamespace,
                "desc_off");
        tv_update_title.setText(str_desc_title);

    }

4、可对自定义属性值做其他用途的处理

/**
     * 设置组合控件的状态
     *
     * @param isChecked
     */
    public void SetChecked(boolean isChecked) {
        cb_update.setChecked(isChecked);
        if(isChecked)
        {
            SetDesc(str_desc_on);
        }
        else
        {
            SetDesc(str_desc_off);
        }
    }

    /**
     * 设置描述信息
     *
     * @param isChecked
     */
    public void SetDesc(String text) {
        tv_update_content.setText(text);
    }
时间: 2024-12-08 18:21:19

Android开发学习笔记-自定义控件的属性的相关文章

Android开发学习笔记之Activity属性设置

麦子学院android开发老师说Activity是Android组件中最基本也是最为常见用的四大组件之一,在android开发中运用极为广泛,作为android开发初学者需要熟练掌握,麦子学院android开发老师分享了Activity属性的常用设置. android:allowTaskReparenting 是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务. android:alwaysRetainTaskState 是否保留状态不变, 比如切换回home, 再从新打

Android开发学习笔记-自定义TextView属性模版

如果项目中有很多个控件使用的是同一种样式,则为了方便,可以将样式设置到系统中去,这样使用的时候会方便很多. 下面是自定义样式模版的方法. 1.在style.xml文件中添加自己要设置的样式内容 <resources> <!-- Base application theme, dependent on API level. This theme is replaced by AppBaseTheme from res/values-vXX/styles.xml on newer devic

Android开发学习笔记:数据存取之SQLite浅析

一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl.PHP.Java.C++..Net等,还有ODBC接口,同样比起 Mysql.PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的

转 Android开发学习笔记:浅谈WebView

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangruijun.blog.51cto.com/3061169/647456 WebView(网络视图)能加载显示网页,可以将其视为一个浏览器.它使用了WebKit渲染引擎加载显示网页,实现WebView有以下两种不同的方法: 第一种方法的步骤: 1.在要Activity中实例化WebView组件:WebView webView = new WebView(this); 2

【Android开发学习笔记】【第三课】Activity和Intent

首先来看一个Activity当中启动另一个Activity,直接上代码说吧: (1)首先要多个Activity,那么首先在res-layout下新建一个 Other.xml,用来充当第二个Activity的布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu

android 开发学习笔记 (一)

每个app 都有一个自己的 linux 进程: 每个进程都在自己的虚拟机里执行 两个app 可以跑在一个进程,一个vm里 android app 四大组件:activity,content provider,      services, broardcast receivers Content Resolver 激活 Content Provider You can start an      activity (or give it something new to do) by passi

android开发学习笔记000

使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个一直梦想走技术流的再疯狂一次.2014.08.06. 直奔主题——>android开发学习笔记001 android开发学习笔记000

android开发学习笔记001a

Android 应用与开发环境 1.使用SDK版本:Android 2.3 . 2.发展和历史 创始人:Andy Rubin,Android公司被Google收购.07年11月5日1.0发布. 3.平台架构及特性 Linux内核(操作系统)->函数库,Android运行时(中间件)->应用程序框架->应用程序 我要学习的就是如何在android 操作系统里开发应用程序. 我们只和应用程序框架(Android API)打交道.也就是我们的SDK. 函数库是C/C++的库. Android

【Android开发学习笔记】【第五课】Activity的生命周期-上

今天学习Activity当中的七个生命周期函数: 首先得说一个事情,就是在代码当中如果加入了 System.out.println(" ------");之后,如何查看这里面的输出内容 打开之后只输入“Filter Name”和“by Log Tag” 即可 添加成功后可以看到 本次学习主要总结如下: 1.onCreate() Acitivity首次创建时被调用.用于设置Acitivity的布局文件,绑定按钮监听器等一些普通静态操作. 2.onStart() Acitivity对用户可