Android自定义控件的属性,网上文章已经很多,之前看了也照着写了,其中有一个就是要自定义一个xml的命名空间后然后再给自定义属性赋值,后来发现不知道什么时候开始Android把这个改了,统一用

xmlns:app="http://schemas.android.com/apk/res-auto"
然后在用app作为命名空间给自定义属性赋值,例如:

app:myimage_src="@drawable/myimage"
当然了,这个属性肯定是要在res/values/attrs.xml 里面声明过:

<resources>

<declare-styleable name="CusComponent">

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

</declare-styleable>

</resources>

此外,format 还有很多的属性,例如boolean,enum:如官方例子:

  1. <resources>
  2. <declare-styleable name="PieChart">
  3. <attr name="showText" format="boolean" />
  4. <attr name="labelPosition" format="enum">
  5. <enum name="left" value="0"/>
  6. <enum name="right" value="1"/>
  7. </attr>
  8. </declare-styleable>
  9. </resources>

然后在代码总获取到你设置的属性:

在两参数的构造函数中:

public CustomComponent(Context context, AttributeSet attrs) {super(context, attrs);

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CusComponent);

int imageSrcId;

try {

imageSrcId = a.getResourceId(R.styleable.CusComponent_myimage_src,R.drawable.myimage);

finally {

a.recycle();

}

LayoutInflater inflater = LayoutInflater.from(context);

inflater.inflate(R.layout.custom_component_layout, this, true); // 给自定义控件设置布局

b = (ImageButton)findViewById(R.id.btn); // 获取到布局上的ImageButton

b.setImageResource(imageSrcId);

}

当然其实还有很多个方法都是可以获取到属性的,这个比较简单而已。

需要注意的是,通常,我们在给自定义的控件设置好属性后会调用invalidate() 和 requestLayout() 方法对UI进行刷新,确保其显示。

以上是自定义控件属性的一些基本知识,然后项目中在做自定义控件的时候还学习了自定义dialog的定位:

代码很简单:

  1. Dialog dialog = new Dialog(MainActivity.this, R.style.dialog);
  2. Window window = dialog.getWindow();
  3. WindowManager.LayoutParams wlp = window.getAttributes();
  4. wlp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.TOP;
  5. window.setAttributes(wlp);
  6. dialog.setContentView(R.layout.cloud_dialog_view);
  7. dialog.show();

我把dialog定位在了top的位置,并且水平居中。当然你可以根据自己的需要定位在left、top,或者right这样。

要说的是这里的wlp里还有两个关于定位的属性,x,y,这两个属性是根据坐标定位的,不过这个就意味着单位是像素piexl,因此用着不是很方便。

xmlns:app的更多相关文章

  1. 解决 android.support.v7.widget.GridLayout 使用 xmlns:app 出现 error 的问题

    GridLayout 是在 Android API Level 14 加进来的 它可用来取代 TableLayout 也提供了自由度较大且实用的排版功能 为了兼容 4.0 以下的较低版本 Androi ...

  2. 带你实现开发者头条APP(四)---首页优化(加入design包)

    title: 带你实现开发者头条APP(四)---首页优化(加入design包) tags: design,Toolbar,TabLayout,RecyclerView grammar_cjkRuby ...

  3. 手把手教你做个人 app

    我们都知道,开发一个app很大程度依赖服务端:服务端提供接口数据,然后我们展示:另外,开发一个app,还需要美工协助切图.没了接口,没了美工,app似乎只能做成单机版或工具类app,真的是这样的吗?先 ...

  4. Android中Fragment和ViewPager那点事儿(仿微信APP)

    在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...

  5. 【转】【翻】Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏

    转自:http://mrfufufu.github.io/android/2015/07/01/Codelab_Android_Design_Support_Library.html [翻]Andro ...

  6. Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏

    原文:Codelab for Android Design Support Library used in I/O Rewind Bangkok session--Make your app fanc ...

  7. Android App 沉浸式状态栏解决方案

    伴随着 Android 5.0 发布的 Material Design,让 Android 应用告别了以前的工程师审美,迎来了全新的界面,灵动的交互,也让越来越多的 App 开始遵从 material ...

  8. 设置应用栏(Setting Up the App Bar)

    今天星期五,刚从体育场打完球回来,洗了洗脚.明天还要继续上班,也是非常艰难.近期我的小腰有点不舒服,就早点睡觉歇息. 所以今天就简单的翻译一篇Android官方站点上的文章,我会加一些补充. 原文地址 ...

  9. 仿知乎app登录界面(Material Design设计框架拿来就用的TexnInputLayout)

    在我脑子里还没有Material Design这种概念,就我个人而言,PC端应用扁平化设计必须成为首选,手当其冲的两款即时通讯旺旺和QQ早就完成UI扁平化的更新,然而客户端扁平化的设计本身就存在天生的 ...

随机推荐

  1. XML_CPP_资料

    1.TinyXML解析xml文档 - zhoubl668的专栏:远帆,梦之帆! - 博客频道 - CSDN.NET.html http://blog.csdn.net/zhoubl668/articl ...

  2. python开发_sqlite3_绝对完整_博主推荐

    '''SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说 没有独立的维护进程,所有的维护都来自于程序本身. 在python中,使用sqlite3创建数据库的连接,当我们指定的数据库文件不 ...

  3. 开发集成环境Devilbox安装

    一.Devilbox概述 devilbox是一款现代化且高度可定制的开发环境集成,基于docker和docker-compose,支持所有主要平台(win & linux). 它不限制项目的数 ...

  4. 【Demo】Tree.js实例

    Three.js是通过对WebGL接口的封装与简化而形成的一个易用的图形库. 简单点的说法:WebGL可以看成是浏览器给我们提供的接口,在javascript中可以直接用这些API进行3D图形的绘制: ...

  5. Android学习必备--java工具15个

    Weka .Weka集成了数据挖掘工作的机器学习算法.这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用.Weka包括一系列的工具,如数据预处理.分类.回归.聚类.关联规则以及可视化. M ...

  6. IOS-网络(GET请求和POST请求、HTTP通信过程、请求超时、URL转码)

    // // ViewController.m // IOS_0129_HTTP请求 // // Created by ma c on 16/1/29. // Copyright © 2016年 博文科 ...

  7. 设置Shader关键字高亮(网上转)

    原文链接:http://www.cnblogs.com/cg_ghost/archive/2011/11/30/2268734.html 经过试验,在VS2012有效. 1. 创建或编辑usertyp ...

  8. windows下搭建svn服务器及权限配置

    服务器端VISUALSVN SERVER 3.3.1 下载地址 https://www.visualsvn.com/server/download/ 客户端TortoiseSVN 1.8.13下载地址 ...

  9. iOS笔记之ScrollView

    ScrollView三个基本的要理解的属性: contentSize The size of the content view.所以很好理解,contentSize也就是scrollView可滚动的区 ...

  10. Linux运维学习笔记-文件系统知识体系总结

    文件系统知识总结 新买的硬盘要存放数据需要怎么做? 首先将硬盘装机做RAID,做完RAID后进行分区,分完区后格式化创建文件系统,最后存放数据. 硬盘的内外部结构: 物理形状: 接口类型: IDE(I ...