热卖商品
新闻详情
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)
最新动态
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
2021-03-25
品牌分类
其他
联络我们