android_84_自定义属性
来源:互联网 发布:java培训好不好 编辑:程序博客网 时间:2024/06/03 13:00
第1步:
在res/values目录下,新建一个attr.xml
第2步:如下编写attr.xml
<?xml version="1.0" encoding="utf-8"?><resources> // dimension表示支持 dp,sp <attr name="rightPadding" format="dimension"></attr> // name 是自定义View的类名 <declare-styleable name="SGSlidingMenu"> // 自定义属性名称 <attr name="rightPadding"></attr> </declare-styleable></resources>
第3步,在activity_main.xml中使用自定义View的自定义属性
先声明命名空间 (res/后面的是应用的bundle ID)
xmlns:beyond="http://schemas.android.com/apk/res/com.sg31.slidingmenu"
// 自定义View的全名称 自定义属性 beyond:rightPadding = "50dp"<com.sg31.slidingmenu.view.SGSlidingMenu android:id="@+id/id_menu" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/img_frame_background" beyond:rightPadding="80dp" > <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="horizontal" > // 左边是隐藏菜单 <include layout="@layout/left_menu" /> // 右边是主界面 <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/qq" > </LinearLayout> </LinearLayout> </com.sg31.slidingmenu.view.SGSlidingMenu>
第4步,在自定义View中,通过遍历,获取设定的自定义属性的值的大小
/** * 当使用了自定义属性时,会调用此构造方法 * * @param context * @param attrs * @param defStyle */public SGSlidingMenu(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// 通过TypedArray获取我们定义的属性TypedArray typeArr = context.getTheme().obtainStyledAttributes(attrs,R.styleable.SGSlidingMenu, defStyle, 0);// 获取自定义属性数量for (int i = 0; i < typeArr.getIndexCount(); i++) {int attr = typeArr.getIndex(i);switch (attr) {case R.styleable.SGSlidingMenu_rightPadding:// 默认值: 将50dp 转成 像素int initValue = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, context.getResources().getDisplayMetrics());// 获取自定义属性值mMenuRightPadding = typeArr.getDimensionPixelSize(attr,initValue);break;}}// 千万记得要释放!!!typeArr.recycle();// 获取屏幕宽WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics outMetrics = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);mScreenWidth = outMetrics.widthPixels;}
0 0
- android_84_自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- 自定义属性
- Android 超高仿微信图片选择器
- Maven 如何为不同的环境打包 —— 开发、测试和产品环境
- 4
- HttpServletRequest总结
- java视频压缩
- android_84_自定义属性
- PLSQL Developer插入中文乱码
- BZOJ3141: [Hnoi2013]旅行
- SpringBoot--添加配置Servlet,Filter,listener
- 向github提交代码
- [bsoj2258] 线性递推式
- JXL学习总结
- lvs-fullnat + keepalived
- linux下测试磁盘的读写IO速度