1. 自定义视图属性

res/values/attrs.xml   自定义属性值

1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3     <!-- 颜色属性值 -->
4     <declare-styleable name="MyView">
5         <attr name="rect_color" format="color"/>
6     </declare-styleable>
7 </resources>

自定义控件  ---- 长方形

 1 import android.content.Context;
 2 import android.content.res.TypedArray;
 3 import android.util.AttributeSet;
 4 import android.view.View;
 5
 6 public class MyRect extends View {
 7
 8     /** 资源解析程序来使用的 */
 9     public MyRect(Context context, AttributeSet attrs) {
10         super(context, attrs);
11
12         // 设置颜色属性值
13         TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyView);
14         // 得到颜色值,指定一个默认值,红色。
15         int color = ta.getColor(R.styleable.MyView_rect_color, 0xffff0000);
16         // 设置颜色。
17         setBackgroundColor(color);
18
19         ta.recycle(); // 循环
20     }
21
22     public MyRect(Context context) {
23         super(context);
24     }
25
26 }

XML布局文件加载,自定义控件显示:

1)加上,自定义命名空间,其中 com.jikexueyuan.myrect 是包名。

xmlns:jkxy="http://schemas.android.com/apk/res/com.jikexueyuan.myrect"

2)jkxy:rect_color="#ff00ff00"    才可正常使用。

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:jkxy="http://schemas.android.com/apk/res/com.jikexueyuan.myrect"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="vertical"
 7     tools:context="com.jikexueyuan.myrect.MainActivity$PlaceholderFragment" >
 8
 9     <com.jikexueyuan.myrect.MyRect
10         android:layout_width="100dp"
11         android:layout_height="100dp"
12         jkxy:rect_color="#ff00ff00" />
13
14 </LinearLayout>
15
16 <!--
17        1)加上,自定义命名空间,其中 com.jikexueyuan.myrect 是包名。
18           xmlns:jkxy="http://schemas.android.com/apk/res/com.jikexueyuan.myrect"
19        2)jkxy:rect_color="#ff00ff00"    才可正常使用。
20  -->
 1 import android.app.Activity;
 2 import android.app.Fragment;
 3 import android.os.Bundle;
 4 import android.view.LayoutInflater;
 5 import android.view.MenuItem;
 6 import android.view.View;
 7 import android.view.ViewGroup;
 8
 9 public class MainActivity extends Activity {
10
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.activity_main);
15
16         if (savedInstanceState == null) {
17             getFragmentManager().beginTransaction()
18                     .add(R.id.container, new PlaceholderFragment())
19                     .commit();
20         }
21     }
22
23     @Override
24     public boolean onOptionsItemSelected(MenuItem item) {
25         int id = item.getItemId();
26         if (id == R.id.action_settings) {
27             return true;
28         }
29         return super.onOptionsItemSelected(item);
30     }
31
32     /**
33      * A placeholder fragment containing a simple view.
34      */
35     public static class PlaceholderFragment extends Fragment {
36
37         public PlaceholderFragment() {
38         }
39
40         @Override
41         public View onCreateView(LayoutInflater inflater, ViewGroup container,
42                 Bundle savedInstanceState) {
43             View rootView = inflater.inflate(R.layout.fragment_main, container, false);
44             return rootView;
45         }
46     }
47
48 }
1 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
2     xmlns:tools="http://schemas.android.com/tools"
3     android:id="@+id/container"
4     android:layout_width="match_parent"
5     android:layout_height="match_parent"
6     tools:context="com.jikexueyuan.myrect.MainActivity"
7     tools:ignore="MergeRootFrame" />
时间: 2024-11-15 22:26:23

1. 自定义视图属性的相关文章

android自定义视图属性(atts.xml,TypedArray)学习

是一个用于存放恢复obtainStyledAttributes(AttributeSet, int[], int, int)或 obtainAttributes(AttributeSet, int[])  值的一个数组容器,当操作完成以后,一定要调用recycle()方法.用于检索的索引值在这个结构对应的位置给obtainStyledAttributes属性. 使用这个类的时候,先要在valuse文件夹下创建:atts.xml文件: [html] view plaincopy <?xml ver

自定义控件——自定义视图属性

一.新建工程 二.创建类并继承View package com.example.l01myrect; import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.View; /** * Created by 袁磊 on 2017/2/6. */ public class MyRect extends View

Android开发之自定义视图属性

Android框架中,所有自定义的view类都继承自View,也可以继承Button等view的子类 为了允许ADT能够与view交互,必须提供一个能够获取Context和作为属性的AttributeSet对象的构造函数.这个构造函数允许布局编辑器建立和编辑view的实例. 1 public class MyRect extends View { 2 3 public MyRect(Context context) { 4 super(context); 5 // TODO Auto-gener

自定义视图一:扩展现有的视图,添加新的XML属性

这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! 简介 这个系列详细的介绍了如何穿件Android自定义视图.主要涉及的内容有如何绘制内容,layout和measure的原理,如何继承实现view group以及如何给其子视图添加动画.第一篇主要讲述如何扩展和使用现有的视图,以及如何添加特有的XML属性. 特定的任务使用特定的视图 Android提供的view都是比较通用的,哪里都可以用.但是在开发应用的过程中需要对这些通用的view加以修改.很多时候这些代码都添加到了Activ

iOS7新特性 ViewController转场切换(三) 自定义视图控制器容器的切换---非交互式

@继续前面的内容,这一章,主要介绍自定义ViewController容器上视图VC的切换.先来看看系统给我们提供的容器控制器 UINavigationController和UITabBarController 都有一个NSArray类型的属性viewControllers,很明显,存储的就是需要切换的视图VC.同理,我们定义一个ContainerViewController,是UIViewController的直接子类,用来作为容器依托,额,其他属性定义详见代码吧,这里不多说了.(PS:原先我进

UI开发----自定义视图和视图控制器(Controller)

//  Created By 郭仔  2015年04月14日21:34:01 一.自定义视图: 根据需求的不同,?自定义视图继承的类也有所不同.?一般?自定义的 视图会继承于UIView.以下是?自定义视图的要点: 1.创建?一个UIView?子类 2.在类的初始化?方法中添加?子视图 3.类的.h?文件提供?一些接?口(?方法),便于外界操作?子视图 ================== 这里以label-textfield自定义视图为例: 把Label和Textfield封装到LTView中

Android自定义视图四:定制onMeasure强制显示为方形

这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三:给自定义视图添加"流畅"的动画 Android自定义视图四:定制onMeasure强制显示为方形 上一篇开发之后的效果如上图.不过看着这张图,需要注意的不是我们自定义视图展示了什么,而是这个视图的大小和位置.你会看到这个折线图有一个特定的大小(size).这个size是怎么定的呢?现在的代

UI基本控件和自定义视图

UILabel 常用属性: UITextField 常用属性: 输入控制属性: 外观控制属性: 输入框让键盘回收的方法: 1.通过协议 (1)让AppDelegate成为输入框的代理对象 ,让TA去执行事件(AppDelegate接受输入框的协议) (2)接受了协议就要执行键盘回收的方法 (3)建立关系: 如:textField.delegate = self;(self指AppDelegate) 2.通过Tag值 (1)创建一个按钮添加触发事件,让Tag值的键盘回收 (2)按钮触发的事件方法如

自定义视图(组合控件)

前言 Android自定义控件主要分为两种,一种是通过继承View来实现自定义控件,另一种是通过组合已有到控件来实现自定义控件,上篇文章自定义视图(继承View)我们介绍了下继承View到方式,这篇文章简单介绍下组合控件来实现自定义控件. 有些情况我们需要通过组合已有到控件来实现特定功能到控件组建,比如一个应用到题头,大概样式如下 Java代码 通过组合控件来实现自定义控件到方式,是通过继承一个ViewGrou对象来实现,比如LinearLayout, FrameLayout, Relative