- 浏览: 316163 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
u011076522:
写的确实不错,总结的很好,内容大都属实
C/C++内存分配方式 -
水晶魔方:
...
联合编译工具推荐IncrediBuild -
caiwb1990:
又看了一遍~ 越看越清晰~
C/C++内存分配方式 -
caiwb1990:
每次准备面试的时候来瞅瞅。timer_yin 写道好文,正好补 ...
TCP/IP、Http、Socket的区别【转】 -
caiwb1990:
互相学习~kongxuan 写道这个不错,用简单的话将事情讲明 ...
TCP/IP、Http、Socket的区别【转】
在xml 文件里定义控件的属性,我们已经习惯了android:attrs="" ,那么我们能不能定义自己的属性能,比如:test:attrs="" 呢?答案是肯定的.
好了我就不卖关子了,直接进入主题。大致以下步骤:
一、 在res/values 文件下定义一个attrs.xml 文件.代码如下:
二、 我们在MyView.java 代码修改如下,其中下面的构造方法是重点,我们获取定义的属性我们R.sytleable.MyView_textColor, 获取方法中后面通常设定默认值(float textSize = a.getDimension(R.styleable.MyView_textSize, 36 ); ), 防止我们在xml 文件中没有定义.从而使用默认值!
获取,MyView 就是定义在<declare-styleable name="MyView "></declare-styleable> 里的名字,获取里面属性用 名字_ 属性 连接起来就可以.TypedArray 通常最后调用 .recycle() 方法,为了保持以后使用该属性一致性!
MyView.java 全部代码如下:
三、将我们自定义的MyView 加入布局main.xml 文件中,平且使用自定义属性,自定义属性必须加上:
xmlns:test ="http://schemas.android.com/apk/res/cn.caiwb.attr "蓝色 是自定义属性的前缀,红色 是我们包名.
main.xml 全部代码如下:
好了我就不卖关子了,直接进入主题。大致以下步骤:
一、 在res/values 文件下定义一个attrs.xml 文件.代码如下:
一、在res/values文件下定义一个attrs.xml文件.代码如下: <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyView"> <attr name="textColor" format="color" /> <attr name="textSize" format="dimension" /> </declare-styleable> </resources>
二、 我们在MyView.java 代码修改如下,其中下面的构造方法是重点,我们获取定义的属性我们R.sytleable.MyView_textColor, 获取方法中后面通常设定默认值(float textSize = a.getDimension(R.styleable.MyView_textSize, 36 ); ), 防止我们在xml 文件中没有定义.从而使用默认值!
获取,MyView 就是定义在<declare-styleable name="MyView "></declare-styleable> 里的名字,获取里面属性用 名字_ 属性 连接起来就可以.TypedArray 通常最后调用 .recycle() 方法,为了保持以后使用该属性一致性!
public MyView(Context context,AttributeSet attrs) { super(context,attrs); mPaint = new Paint(); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyView); int textColor = a.getColor(R.styleable.MyView_textColor, 0XFFFFFFFF); float textSize = a.getDimension(R.styleable.MyView_textSize, 36); mPaint.setTextSize(textSize); mPaint.setColor(textColor); a.recycle(); }
MyView.java 全部代码如下:
package cn.caiwb.attr; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Paint.Style; import android.util.AttributeSet; import android.view.View; public class MyView extends View { private Paint mPaint; private Context mContext; private static final String mString = "hig"; public MyView(Context context) { super(context); mPaint = new Paint(); } public MyView(Context context,AttributeSet attrs) { super(context,attrs); mPaint = new Paint(); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyView); int textColor = a.getColor(R.styleable.MyView_textColor, 0XFFFFFFFF); float textSize = a.getDimension(R.styleable.MyView_textSize, 36); mPaint.setTextSize(textSize); mPaint.setColor(textColor); a.recycle(); } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); //设置填充 mPaint.setStyle(Style.FILL); //画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标 canvas.drawRect(new Rect(10, 10, 100, 100), mPaint); mPaint.setColor(Color.BLUE); //绘制文字 canvas.drawText(mString, 10, 110, mPaint); } }
三、将我们自定义的MyView 加入布局main.xml 文件中,平且使用自定义属性,自定义属性必须加上:
xmlns:test ="http://schemas.android.com/apk/res/cn.caiwb.attr "蓝色 是自定义属性的前缀,红色 是我们包名.
main.xml 全部代码如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:test="http://schemas.android.com/apk/res/com.android.tutor" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <cn.caiwb.attr.MyView android:layout_width="fill_parent" android:layout_height="fill_parent" test:textSize="20px" test:textColor="#fff" /> </LinearLayout>
发表评论
-
Android多线程:预读实现
2012-04-08 00:22 3029上一篇博文我们可以知道,使用AsyncTask有导致应用FC的 ... -
Android多线程:AsyncTask的分析
2012-04-05 13:34 4633开发Android应用的过程中,我们需要时刻注意保障应用的稳定 ... -
Android异步4:深入AsyncTask原理
2012-03-01 09:12 4853AsyncTask的本质是一个线程池,所有提交的异步任务都会在 ... -
Android异步3:AsyncTask更新UI
2012-02-29 10:13 1412前天写了Thread+Handler的 ... -
Android异步2:深入详解 Handler+Looper+MessageQueue
2012-02-28 10:15 1739Android使用消息机制实现 ... -
Android异步1:Thread+Handler更新UI
2012-02-27 14:01 2283每个Android应用程序都运行在一个dalvik虚拟机进程中 ... -
WebView及js
2012-02-20 09:37 1326在Android中通过WebView控 ... -
Android用线程应注意
2012-02-17 09:36 1416我们都知道Hanlder是线程与Activity通信的桥梁,我 ... -
Android用线程应注意
2012-02-17 09:35 1我们都知道Hanlder是线程 ... -
Android Google Api 获取地址
2012-02-16 09:38 3382我们获取Location的目的之一肯定是有获取这个位置的详细地 ... -
Android获取经纬度
2012-02-16 09:34 4460Location 在Android 开发中还是经常用到的,比如 ... -
Android启动已安装应用
2012-02-15 22:45 1200如何在一个应用中 通过某个事件,而去启动另外一个已安装的应用。 ... -
Android 获取Ip
2012-02-15 22:41 1146我们开发中,有判断手机是否联网,或者想获得当前手机的Ip地址, ... -
布局定义菜单--MenuInflater的使用
2012-02-14 10:42 2235传统意义上的定义菜单感觉比较繁琐,当我们使用MenuInfla ... -
LayoutInflater的使用
2012-02-13 11:58 1378在实际开发种LayoutInflater这个类还是非常有用的, ... -
自定义View
2012-02-13 11:37 1022对于初学着来说,他们习惯了Android 传统的页面布局方式, ... -
Intent传递对象的两种方法(Serializable,Parcelable)
2012-02-13 10:23 30116今天讲一下Android中Intent中如何传递对象,就我目前 ... -
Android Service 服务详细讲解
2012-01-16 09:38 1037Android 的Service 和 Handler一样很重, ... -
自定义窗口标题
2011-11-06 14:10 1728我们看到过很多应用,他们的窗口标题行都不是系统默认的 要么有按 ...
相关推荐
3. **动态加载属性**: 要让`PropertyGrid`识别并显示这些自定义属性,我们需要创建一个`TypeDescriptor`的子类,并在其中覆盖`GetProperties()`方法,返回包含自定义属性的属性集合。例如: ```csharp public class...
下面,我们将详细探讨如何在SharePoint 2010中扩展Web Part自定义属性,以实现边栏字段的定制。 1. **理解Web Part属性** - Web Part属性是定义Web Part行为的关键元素,它们可以是任何类型的数据,如字符串、布尔...
SolidWorks自定义属性之属性标签编制程序 SolidWorks中的自定义属性是通过属性标签编制程序来实现的,该程序可以创建零件、装配体、工程图和焊件的自定义属性界面。在本文中,我们将详细介绍属性标签编制程序的...
在Android开发中,自定义属性是一项非常重要的技能,它能够帮助开发者实现个性化和高度定制的UI组件。本篇文章将深入探讨三种不同的自定义属性方法,并结合相关博客资源,以`Custom_TextView`为例进行详细解释。 一...
【SolidWorks一键清空自定义属性】 代码在SolidWorks2020版本下编制,在其他版本中使用自行引用运行库(方法:打开SolidWorks→工具→宏→编辑→打开“删除属性.swp”→工具→引用→把丢失项取消勾选,勾选你当前...
这个范例将向我们展示如何扩展`PropertyGrid`的功能,以支持自定义属性。 `PropertyGrid`控件默认会自动显示关联对象的所有公共属性和字段,但如果我们想要添加一些特殊处理,如自定义编辑器、属性标签、图标等,就...
在.NET框架中,自定义属性(Custom Attributes)是一种元数据,可以附加到代码的各种元素上,如类、方法、字段等,提供额外的信息用于运行时的处理或代码分析。自定义属性增强了代码的可扩展性和灵活性,使得我们...
例如,自定义属性可以包含用于控制行为或动态内容的指令,`ExtTag`会解析这些指令并执行相应的动作。 5. **实际应用**:自定义属性常用于AJAX应用、单页应用(SPA)、响应式设计以及任何需要在JavaScript中处理HTML...
在VB(Visual Basic)编程中,自定义属性是扩展对象功能的一种重要方式。自定义属性允许程序员根据项目需求创建特定的访问器,控制属性的读取、写入甚至执行更复杂的逻辑。本实例将深入探讨如何在VB中实现自定义属性...
通过在该文件中声明自定义属性,我们可以为控件添加新的配置选项。以下是几种常见的属性类型及其用法: 1. **reference**: 这种类型用于引用已存在的资源ID,如颜色、图片等。例如: ```xml ``` 2. **color*...
在Android开发中,有时我们需要对系统提供的控件进行扩展,以满足特定的需求,这就涉及到控件的重写和自定义属性的添加。本篇将详细讲解如何在Android中实现这一功能。 首先,我们要理解Android控件重写的基本原理...
本项目似乎是一个关于自定义WinForm表单的实例,其中涉及到控件的自定义属性、控件内数据的定义,以及利用XML进行数据的存储和加载。让我们深入探讨这些知识点。 首先,**自定义WinForm表单**是指开发人员根据需求...
本教程将深入探讨如何在`PropertyGrid`控件中自定义属性的显示方式,以实现更丰富的用户交互体验。 首先,自定义属性是C#中一个强大的特性,允许我们在类中添加元数据,这些元数据可以用来提供额外的信息,如描述、...
本篇将深入探讨如何利用C#实现自定义属性编辑器,并结合UserControl和Component两种方式来实现属性编辑。 首先,理解UITypeEditor的工作原理是至关重要的。UITypeEditor是一个接口,位于System.Drawing.Design命名...
### option自定义属性的作用及其应用 #### 一、引言 HTML 作为构建网页的基础语言之一,提供了多种标签用于创建动态且丰富的用户界面。其中 `<option>` 标签主要用于 `<select>` 下拉列表中,为用户提供一系列选项...
在IT领域,事件绑定和自定义属性是两个关键概念,特别是在构建交互式用户界面时。本文将深入探讨这两个概念,并结合源码分析和工具应用,为开发者提供更全面的理解。 首先,我们来看“事件绑定”。在编程中,事件是...
这篇博客“spring 自定义属性编辑器”可能详细介绍了如何在Spring中创建和注册自定义属性编辑器,以满足特定的业务需求。 首先,了解Spring中的属性编辑器机制。Spring会自动寻找并使用`java.beans.PropertyEditor`...
首先,让我们了解一下自定义属性。在HTML5中,允许开发者为元素添加非标准的属性,这些属性通常以"data-"开头,例如"data-value"。这样做是为了保持语义化,同时提供额外的数据存储空间。在jQuery中,我们可以轻松地...
在Android开发中,自定义属性和其引用是提高应用程序可扩展性和灵活性的重要手段。通过创建自定义属性,开发者可以为控件或者布局增加特定的功能,同时保持代码的整洁和模块化。本文将深入探讨Android自定义属性的...