Android 自定义View的一些使用技巧
来源:互联网 发布:淘宝店充值话费怎么开 编辑:程序博客网 时间:2024/06/05 20:33
好多人看到这个标题就想说,呵呵哒
其实博主的目的是教会大家一些实用的开发技巧,帮助你渡过技术难关,让你遇见新大陆
废话先不多说了,仔细的查看本文,因为每一条经验都是汗水和泪水凝结的精华
1:巧用View.inflate()
inflate函数是View的静态函数,返回参数是一个View对象,主要功能是将一个.xml布局转换成一个view对象,函数的参数分别是:context,layoutID,GroupView
一般人写的时候第三个参数都是传一个null,问他为什么传一个null,一挠头说:我也不知道,别人都是这么干的。
private LinearLayout createLabelView(int iconColor,String labelText){ LinearLayout itemLabelView = (LinearLayout) View.inflate(context,R.layout.view_item_label,null); View itemIconView = itemLabelView.findViewById(R.id.itemLabel_iconView); TextView itemTextView = itemLabelView.findViewById(R.id.itemLabel_textView); itemIconView.setBackgroundColor(iconColor); itemTextView.setText(labelText); return itemLabelView;}
这段代码中,第三个参数就传递了null
private void initView(){ View.inflate(context, R.layout.base_view_pie_chart,this); pieChartView = findViewById(R.id.basePieChartView); labelLayout = findViewById(R.id.baseLabelLayout);}而在这段代码中,我却传递了一个this对象,这个this是谁呢?
public class BasePieChartView extends FrameLayout
这里我继承了FragmentLayout,可见,我传递了一个FragmentLayout的对象。
为什么要这么干?这么干有什么意义吗?
这样做的意义是:当把一个xml格式的布局转换成一个view对象时,第三个参数的意义是把 谁 设为这个view的父容器,如果这个不传递这个this的话,使用这个布局前必须调用 this.addView(View.inflate(context,xxx,null)),否则是这个自定义的FramentLayout将显示不到你引入的这个xml格式的View。传递这个this,就是把当前的FragmentLayout对象赋给这个xml格式的view,他们成为同一个引用了。
2:巧用LayoutParams
LayoutParams是当前View的一些参数,比如:left边距,top边距,width,gravity 等属性
LayoutParams对象可通过view.getLayoutParams() 获取
但是获取之前有一点小小规则:LinearLayout布局,可在addView之后获取,如果这个view是一个childView
并且已经添加了,那么就没问题。如果在还没有添加的情况下就获取则会出现空指针异常
LayoutParams在FragmentLayout中是不能直接get的,也是出现空指针,解决办法就是new 一个LayoutParams
设置完参数后,再设置给这个FragmentLayout,如果再需要获取,就可以通过get的方式直接获取了
阅读全文
0 0
- Android 自定义View的一些使用技巧
- Android 自定义View的使用
- Android自定义View的使用
- android!自定义view的使用
- Android-自定义View的使用
- Android自定义View的一些理解
- Android 自定义View的一些总结
- android 积累一些自定义view的知识
- 自定义View或者ViewGroup的自定义属性使用技巧
- Android中自定义View中的使用与绘制技巧
- android 自定义View使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- Android之自定义View的使用
- Android中自定义View的MeasureSpec使用
- 【Android】自定义View之Canvas的使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- 网络缓冲图片添加小圆点和无限轮播
- Android Realm数据库使用
- Search in Rotated Sorted Array LeetCode解题报告
- TCP/IP四层模型
- Centos 误删rpm命令拯救
- Android 自定义View的一些使用技巧
- MySQL按日期统计
- 静态、全局和局部变量在作用域和内存空间的详解
- Mybatis--查询collection--List<String>
- 开发工具总结
- 更新二进制位-LintCode
- add Shell命令中提示opendir failed, Permission denied解决方法
- ajax从JSP传递对象数组到后台
- 固件#01--USB转I2C底层代码和原理