4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
Android自定义属性的使用-lilingshui-51CTO博客
来自 : 51CTO技术博客 发布时间:2021-03-25

在android中我们习惯了在XML布局文件中,进行控件属性的设置,由于控件默认提供的属性数量有限,为了增加属性我们可以给控件添加一些自定义的属性,下面来讲一下为控件添加自定义属性的几个步骤。

1 在res/values文件下添加一个attrs.xml文件(没有的话)如下:

 ?xmlversion= 1.0 encoding= utf-8 ?  resources  !--添加了一个ImageTextButton的属性集--  declare-styleablename= ImageTextButton  attrformat= reference name= iconImage /  attrformat= reference name= bkImage /  attrformat= integer name= borderLeft /  attrformat= integer name= borderRight /  attrformat= integer name= borderTop /  attrformat= integer name= borderBottom /  attrformat= integer name= buttonstate /  attrname= iconLocation  enumname= center value= 0 /  enumname= left value= 1 /  enumname= right value= 2 /  /attr  /declare-styleable  /resources 

2 在相关的XML布局文件中使用自定义的属性:

 ?xmlversion= 1.0 encoding= utf-8 ?  LinearLayoutxmlns:android= http://schemas.android.com/apk/res/android xmlns:mux= http://schemas.android.com/apk/res/com.shareboard android:layout_width= 530dp android:layout_height= 320dp android:background= @color/dlgBg android:orientation= vertical  
!--com.shareboard为工程所在包--
com.shareboard.uicontrols.ImageTextButtonandroid:id= @+id/btnCancel android:layout_width= 100sp android:layout_height= wrap_content android:layout_alignParentRight= true android:layout_marginRight= 20dp mux:bkImage= @drawable/cell_bkgnd mux:buttonstate= 2 android:text= @string/btn_cancel android:textColor= @color/btnText android:textSize= @dimen/btnText / com.shareboard.uicontrols.ImageTextButtonandroid:id= @+id/btnDone android:layout_width= 100sp android:layout_height= wrap_content android:layout_alignParentLeft= true android:layout_marginLeft= @dimen/btnMargin mux:bkImage= @drawable/cell_bkgnd mux:buttonstate= 2 android:text= @string/btn_done android:textColor= @color/btnText android:textSize= @dimen/btnText / /LinearLayout

3 在代码中获取自定义的属性值:

publicfinalclassImageTextButtonextendsButton{
privateintmIconId;privateintmBkimgId;privateintmBorderLeft=10;privateintmBorderRight=10;privateintmBorderTop=10;privateintmBorderBottom=10;privateintmnButtonState=4;privateintmIconLocation=0;privatebooleanmbChecked=false;publicImageTextButton(Contextcontext){super(context);setClickable(true);}publicImageTextButton(Contextcontext,AttributeSetattrs){super(context,attrs);readAttrs(context,attrs);setClickable(true);}
privatevoidreadAttrs(Contextcontext,AttributeSetattrs){TypedArraytypes=context.obtainStyledAttributes(attrs,R.styleable.ImageTextButton);finalintcount=types.getIndexCount();for(inti=0;i count;++i){intattr=types.getIndex(i);switch(attr){caseR.styleable.ImageTextButton_iconImage:mIconId=types.getResourceId(attr,0);break;caseR.styleable.ImageTextButton_bkImage:mBkimgId=types.getResourceId(attr,0);break;caseR.styleable.ImageTextButton_borderLeft:mBorderLeft=types.getInteger(attr,10);break;caseR.styleable.ImageTextButton_borderRight:mBorderRight=types.getInteger(attr,10);break;caseR.styleable.ImageTextButton_borderTop:mBorderTop=types.getInteger(attr,10);break;caseR.styleable.ImageTextButton_borderBottom:mBorderBottom=types.getInteger(attr,10);break;caseR.styleable.ImageTextButton_iconLocation:mIconLocation=types.getInteger(attr,0);break;caseR.styleable.ImageTextButton_buttonstate:mnButtonState=types.getInteger(attr,4);break;}}types.recycle();}
}

好了这就完成了自定义属性的定义和使用。

©著作权归作者所有:来自51CTO博客作者qsjming的原创作品,如需转载,请注明出处,否则将追究法律责任 职场 休闲 android android开发

本文链接: http://mattrid.immuno-online.com/view-772279.html

发布于 : 2021-03-25 阅读(0)