Android应用开发之自定义控件:Flag标签
白羽 2018-07-17 来源 :网络 阅读 2354 评论 0

摘要:本文将带你了解自定义控件使用attrs属性,希望本文对大家学Android有所帮助。

一、attrs.xml文件的中属性类型format值的格式

"reference" //引用"color" //颜色"boolean" //布尔值"dimension" //尺寸值"float" //浮点值"integer" //整型值"string" //字符串"fraction" //百分数,比如200%12345678

枚举型的格式:

< attr name="orientation">
 < enum name="horizontal" value="0" />
 < enum name="vertical" value="1" />
< /attr>1234

XML文件中使用:

android:orientation = "vertical"1

标志位、位或运算,格式如下:

< attr name="windowSoftInputMode">
 < flag name = "stateUnspecified" value = "0" />
 < flag name = "stateUnchanged" value = "1" />
 < flag name = "stateHidden" value = "2" />
 < flag name = "stateAlwaysHidden" value = "3" />
 < flag name = "stateVisible" value = "4" />
 < flag name = "stateAlwaysVisible" value = "5" />
 < flag name = "adjustUnspecified" value = "0x00" />
 < flag name = "adjustResize" value = "0x10" />
 < flag name = "adjustPan" value = "0x20" />
 < flag name = "adjustNothing" value = "0x30" />
< /attr>123456789101112

XML文件中使用:

android:windowSoftInputMode = "stateUnspecified | stateUnchanged | stateHidden">1

属性定义可以指定多种类型:

< attr name = "background" format = "reference|color" />1

XML文件中使用:

android:background = "@drawable/图片ID|#00FF00"1

以上内容转自//blog.csdn.net/wxg630815/article/details/6989316

二、自定义控件的使用

1、自定义控件在布局中使用,只需要写入类名就可以了。其他属性和一般控件写法一样。如:android:layout_width=”wrap_content”等。

<com.chengkni.demo.attrs.MyView      xmlns:test="//schemas.android.com/apk/res/com.chengkni.demo.attrs"
 android:id="@+id/view_main_my_view"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 test:tText="hello word" />12345

2、如果自定义的控件想使用自己定义的属性标签。在布局中添加命名空间“xmlns:‘名字’=”//schemas.android.com/apk/res/‘自己软件包名’“。然后在工程中values文件下添加attrs.xml文件。

<?xml version="1.0" encoding="utf-8"?><resources>
   <declare-styleable name="CustomView">
       <attr name="tText" format="string" />
   </declare-styleable></resources>123456

添加完成后只需在布局中写出标签的内容即可。如上边布局文件,xmlns:test=”//schemas.android.com/apk/res/com.chengkni.demo.attrs”就可以使用test这个命名空间,然后通过命名空间使用attrs.xml下的tText标签。

3、我们定义的自定义的控件MyView,继承了View。控件有个字段mViewName用来标记改控件的名字。我们可以通过在布局文件设置自定义属性就可以在实现给MyView的mViewName命名。

package com.chengkni.demo.attrs;import android.content.Context;import android.content.res.TypedArray;import android.util.AttributeSet;import android.util.Log;import android.view.View;public class MyView extends View {
   private String TAG = this.getClass().getSimpleName();    private String mViewName;    public MyView(Context context) {        super(context);
       Log.e(TAG, "---------- MyView(1) ----------");
       init(context, null);
   }    public MyView(Context context, AttributeSet attrs) {        super(context, attrs);
       Log.e(TAG, "---------- MyView(2) ----------");
       init(context, attrs);
   }    public MyView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);
       Log.e(TAG, "---------- MyView(3) ----------");
       init(context, attrs);
   }    private void init(Context context, AttributeSet attrs) {        if (attrs == null) {
           mViewName = "Attrs is null";
       } else {
           TypedArray array = context.obtainStyledAttributes(attrs,
                   R.styleable.CustomView);
           mViewName = array.getString(R.styleable.CustomView_tText);
           array.recycle();
       }
       Log.e(TAG, "mString = " + mViewName);
   }    public String getmViewName() {        return mViewName;
   }    public void setmViewName(String mViewName) {        this.mViewName = mViewName;
   }
}


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 2 不喜欢 | 3
看完这篇文章有何感觉?已经有5人表态,40%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程