xmlns:app
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:如官方例子:
- <resources>
- <declare-styleable name="PieChart">
- <attr name="showText" format="boolean" />
- <attr name="labelPosition" format="enum">
- <enum name="left" value="0"/>
- <enum name="right" value="1"/>
- </attr>
- </declare-styleable>
- </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的定位:
代码很简单:
- Dialog dialog = new Dialog(MainActivity.this, R.style.dialog);
- Window window = dialog.getWindow();
- WindowManager.LayoutParams wlp = window.getAttributes();
- wlp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.TOP;
- window.setAttributes(wlp);
- dialog.setContentView(R.layout.cloud_dialog_view);
- dialog.show();
我把dialog定位在了top的位置,并且水平居中。当然你可以根据自己的需要定位在left、top,或者right这样。
要说的是这里的wlp里还有两个关于定位的属性,x,y,这两个属性是根据坐标定位的,不过这个就意味着单位是像素piexl,因此用着不是很方便。
xmlns:app的更多相关文章
- 解决 android.support.v7.widget.GridLayout 使用 xmlns:app 出现 error 的问题
GridLayout 是在 Android API Level 14 加进来的 它可用来取代 TableLayout 也提供了自由度较大且实用的排版功能 为了兼容 4.0 以下的较低版本 Androi ...
- 带你实现开发者头条APP(四)---首页优化(加入design包)
title: 带你实现开发者头条APP(四)---首页优化(加入design包) tags: design,Toolbar,TabLayout,RecyclerView grammar_cjkRuby ...
- 手把手教你做个人 app
我们都知道,开发一个app很大程度依赖服务端:服务端提供接口数据,然后我们展示:另外,开发一个app,还需要美工协助切图.没了接口,没了美工,app似乎只能做成单机版或工具类app,真的是这样的吗?先 ...
- Android中Fragment和ViewPager那点事儿(仿微信APP)
在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...
- 【转】【翻】Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏
转自:http://mrfufufu.github.io/android/2015/07/01/Codelab_Android_Design_Support_Library.html [翻]Andro ...
- Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏
原文:Codelab for Android Design Support Library used in I/O Rewind Bangkok session--Make your app fanc ...
- Android App 沉浸式状态栏解决方案
伴随着 Android 5.0 发布的 Material Design,让 Android 应用告别了以前的工程师审美,迎来了全新的界面,灵动的交互,也让越来越多的 App 开始遵从 material ...
- 设置应用栏(Setting Up the App Bar)
今天星期五,刚从体育场打完球回来,洗了洗脚.明天还要继续上班,也是非常艰难.近期我的小腰有点不舒服,就早点睡觉歇息. 所以今天就简单的翻译一篇Android官方站点上的文章,我会加一些补充. 原文地址 ...
- 仿知乎app登录界面(Material Design设计框架拿来就用的TexnInputLayout)
在我脑子里还没有Material Design这种概念,就我个人而言,PC端应用扁平化设计必须成为首选,手当其冲的两款即时通讯旺旺和QQ早就完成UI扁平化的更新,然而客户端扁平化的设计本身就存在天生的 ...
随机推荐
- 最近公共祖先问题 LCA
2018-03-10 18:04:55 在图论和计算机科学中,最近公共祖先,LCA(Lowest Common Ancestor)是指在一个树或者有向无环图中同时拥有v和w作为后代的最深的节点. 计算 ...
- DOM window的事件和方法; Rails查询语法query(查询结构继承); turbolinks的局限;
window.innerHeight 是浏览器窗口可用的高度. window.outerHeight 是浏览器窗口最大的高度. 打开chrome-inspector,上下移动inspector,看到s ...
- word问题禁止宏
[在此处输入文章标题] 解决Word2010关闭文档时提示:"您正在试图运行的函数包含有宏或需要宏支持的内容" http://www.cnblogs.com/rhxuza1993/ ...
- UVALive 5903 Piece it together 二分匹配,拆点 难度:1
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- bzoj2120
题解: 可修改莫队 我们加入一个时间T 然后在排序的时候考虑一下时间 在计算的时候也要考虑 代码: #include<bits/stdc++.h> using namespace std; ...
- Java——基本概念
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- 剑指offer+名企面试官精讲典型编程题,28题扩展题
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- CMD中goto语句会中断for循环特性详解
在这个程序里面由于用到了上篇文章中所说的字符串切割,而用到了Goto强制跳转语句 但是在程序中使用的时候却发现一个错误,当把这个字符切割的代码段如果直接作为非嵌套语句执行正常 但是一旦放到for循环的 ...
- 20181009-5 选题 Scrum立会报告+燃尽图 04
Scrum立会报告+燃尽图(04)选题 此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2194] 一.小组介绍 组长:刘 ...
- lmdb数据格式
http://deepdish.io/2015/04/28/creating-lmdb-in-python/ https://lmdb.readthedocs.org/en/release/ http ...