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扁平化的更新,然而客户端扁平化的设计本身就存在天生的 ...
随机推荐
- TCGA下载神器--TCGAbiolinks
http://bioconductor.org/packages/devel/bioc/vignettes/TCGAbiolinks/inst/doc/tcgaBiolinks.html#gdcque ...
- C++中的动态绑定
C++中基类和派生类遵循类型兼容原则:即可用派生类的对象去初始化基类的对象,可用派生类的对象去初始化基类的引用,可用派生类对象的地址去初始化基类对象指针. C++中动态绑定条件发生需要满足2个条件: ...
- 【测试设计】使用jenkins 插件Allure生成漂亮的自动化测试报告
前言 以前做自动化测试的时候一直用的HTMLTestRunner来生成测试报告,后来也尝试过用Python的PyH模块自己构建测试报告,在后来看到了RobotFramework的测试报告,感觉之前用的 ...
- 递归--练习7--noi1750全排列
递归--练习7--noi1750全排列 一.心得 二.题目 1750:全排列 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个由不同的小写字母组成的字符串,输出这个字符串的所 ...
- 雷林鹏分享:Ruby 异常
Ruby 异常 异常和执行总是被联系在一起.如果您打开一个不存在的文件,且没有恰当地处理这种情况,那么您的程序则被认为是低质量的. 如果异常发生,则程序停止.异常用于处理各种类型的错误,这些错误可能在 ...
- Codeforces Round #418 (Div. 2)D
给n个圆要么包含,要么相分离,没有两个公共点,当成一棵树,把包含的面积大的放在上面 如图最上面的par记为-1,level记为0,当par==-1||level==1时就加否则减, 就是第一,二层先加 ...
- elasticsearch搜索引擎学习1
用elasticsearch-river-jdbc同步数据到elasticsearch 用elasticsearch-river-jdbc同步数据到elasticsearch 1 插件安装 插件的g ...
- SharePoint Development - Custom Content Type using Visual Studio 2010 based SharePoint 2010
博客地址 http://blog.csdn.net/foxdave 本文所述均来自之前实际的项目模块 首先再论述一下SharePoint ContentType内容类型 SharePoint的列表和文 ...
- specialized English for automation-Lesson 2 Basic Circuits of Operational Amplifiers
排版有点乱.... ========================================================================= Operational Ampl ...
- 【linux】查看进程
查询所有:ps aux 查询某个用户:ps -u abc 终止某个进程:kill