位置: 编程技术 - 正文

Android自定义属性时TypedArray的使用方法(android 自定义dialog)

编辑:rootadmin
有时候android传统的页面布局不足以满足我们的需求,常常需要自己定义view,通常继承View,然后重写构造方法以及onDraw等函数,再具体实现自己定义的复杂view。我们知道在给控件赋属性时,通常使用的是android系统自带的属性,比如 android:layout_height="wrap_content",除此之外,我们亦可以自己定义属性,这样在使用的时候我们就可以使用形如 myapp:myTextSize="sp"的方式了,步骤大致如下:1》在项目文件res/value下面创建一个attr.xml文件,该文件中包含若干个attr集合,例如:[html]<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyView"> <attr name="myTextSize" format="dimension"/> <attr name="myColor" format="color"/> </declare-styleable> </resources> 其中resource是跟标签,可以在里面定义若干个declare-styleable,<declare-styleable name="MyView">中name定义了变量的名称,下面可以再自定义多个属性,针对<attr name="myTextSize" format="dimension"/>来说,其属性的名称为"myTextSize",format指定了该属性类型为dimension,只能表示字体的大小。format还可以指定其他的类型比如;reference 表示引用,参考某一资源IDstring 表示字符串color 表示颜色&#;dimension 表示尺寸&#;boolean 表示布尔&#;integer 表示整型&#;float 表示浮点&#;fraction 表示百分数enum 表示枚举&#;flag 表示位运算 2》在使用到该自定义view的布局文件中键入如下的一行:绿色是自己定义属性的前缀名字,粉色是项目的包名,这样一来,在我们自己定义的view的属性中,就可以使用自己在attr中定义的属性啦,例如:[html] <LinearLayout xmlns:android=" xmlns:myapp=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <com.eyu.attrtextdemo.MyView android:layout_height="wrap_content" android:layout_width="wrap_content" myapp:myTextSize="sp" myapp:myColor="#"/> </LinearLayout> 3》在自定义view的代码中引入自定义属性,修改构造函数context通过调用obtainStyledAttributes方法来获取一个TypeArray,然后由该TypeArray来对属性进行设置obtainStyledAttributes方法有三个,我们最常用的是有一个参数的obtainStyledAttributes(int[] attrs),其参数直接styleable中获得TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.MyView);调用结束后务必调用recycle()方法,否则这次的设定会对下次的使用造成影响 具体如下:[java] package com.eyu.attrtextdemo; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Paint.Style; import android.util.AttributeSet; import android.view.View; public class MyView extends View{ public Paint paint; public MyView(Context context, AttributeSet attrs) { super(context, attrs); paint = new Paint(); TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.MyView); int textColor = a.getColor(R.styleable.MyView_myColor, ); float textSize = a.getDimension(R.styleable.MyView_myTextSize, ); paint.setTextSize(textSize); paint.setColor(textColor); a.recycle(); } public MyView(Context context) { super(context); // TODO Auto-generated constructor stub } @Override www.2cto.com protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); paint.setStyle(Style.FILL); canvas.drawText("aaaaaaa", , , paint); } } 运行后:

推荐整理分享Android自定义属性时TypedArray的使用方法(android 自定义dialog),希望有所帮助,仅作参考,欢迎阅读内容。

Android自定义属性时TypedArray的使用方法(android 自定义dialog)

文章相关热门搜索词:android 自定义actionbar,android 自定义dialog,android自定义属性详解,android 自定义,android自定义属性attr,Android自定义属性名相同format不同,android自定义属性详解,Android自定义属性名相同format不同,内容如对您有帮助,希望把文章链接给更多的朋友!

Android使用JNI(从java调用本地函数) 当编写一个混合有本地C代码和Java的应用程序时,需要使用Java本地接口(JNI)作为连接桥梁。JNI作为一个软件层和API,允许使用本地代码调用Java对象的

Android - DrawerLayout的使用 AndroidDrawerLayout的使用。从屏幕的左右边缘开始拖动,能拖出一个新的视图。activity_main.xmlandroid.support.v4.widget.DrawerLayoutxmlns:android=

Android开发:StaggeredGridView瀑布流控件运行异常崩溃解决方法 StaggeredGridView是github上一个开源的瀑布流图片库,本文将分享集成StaggeredGridView时碰到的异常以及解决方法,StaggeredGriedView开源地址为:

标签: android 自定义dialog

本文链接地址:https://www.jiuchutong.com/biancheng/383268.html 转载请保留说明!

上一篇:android开发运行程序出现stop(android开发程序)

下一篇:Android使用JNI(从java调用本地函数)(Android使用的方式来管理)

  • 公司名下的车怎么报废
  • 交易性金融资产有哪些
  • 合并两公司的帐务怎么做
  • 邮政开票税点是什么意思
  • 填写三季度预缴所得税申报表应关注哪些事项
  • 融资租赁的销项税额抵减
  • 接受捐赠材料支付的运费 扣除
  • 装修工程分期开票分期付款如何作账?
  • 总分公司能互相开票吗
  • 租房提前退租违约金国家标准
  • 公司前三季度实现营业收入59.17亿元
  • 没有成立工会的企业要交工会筹备金吗
  • 委托代收款
  • 如何区分纳税调额和补税
  • 支付销售产品的保险费计入什么科目
  • 贸易公司购入商品会计分录
  • 公司没有实缴可以破产么
  • 资本化利息金额
  • 2023增值税免税政策
  • 应交税费在借方是进项还是销项
  • 印花税减免需要做账吗现在
  • 增值税贷方余额为负数怎么调整
  • 付款交单和承兑交单对卖方来说都有一定风险
  • 交易性金融资产入账价值怎么计算
  • 处理废料会计分录大全
  • winds10企业版
  • 交房产税要带身份证嘛
  • 企业研发费用可以只加计一半吗
  • 系统之家的系统免费吗
  • linux内存缓存
  • 单反镜头直径越大是不是就越好
  • 营改增后,个人转让房屋的个人所得税
  • web前端综合案例开发离线作业1
  • 销项负数发票需要入账吗
  • uniapp微信小程序兼容
  • 适用于windows7的更新程序会更新到windows10吗
  • 资产负债表中应收账款的计算公式
  • 民间非营利组织会计账务处理
  • 固定资产清理如何申报增值税
  • 营业执照上有劳务派遣还需要办其他手续吗
  • 小规模个体户国税怎么算
  • 补充医疗相关政策
  • sqlserver批量更新存储脚本
  • 企业收到投资款应贷记什么账户
  • 两个公司开发票
  • 城建税减半从什么时候开始
  • 发票作废该如何操作
  • 归纳投入外币资产怎么写
  • 一般纳税人开红字专用发票流程
  • 新政府会计下专业学什么
  • 承兑汇票的贴息怎么算
  • 固定资产一旦处于什么状态
  • 低值易耗的管理制度
  • 5000元固定资产一次性计提折旧
  • 稳岗补贴会计分录怎么做,需要缴纳企业所得税不
  • 磁盘缓存技术
  • mysqlusing
  • windowsvista忘记登录密码
  • Windows Server 2003关闭启动后的Ctrl+Alt+Del选项和关机时的时间跟踪程序方法
  • wfxswtch.exe - wfxswtch是什么进程
  • mac快速操作在哪
  • 微软报错是什么意思
  • windows 10移动版
  • cocos2d-x教程
  • jquery延时器
  • jquery与ajax获取特殊字符实例详解
  • 拼图java代码
  • linux怎么查看tomcat位置
  • bat实现的模仿黑客帝国里面的数码雨
  • js基于什么
  • 用javascript
  • 税务登记证书怎么办
  • 贵州税务大厅咨询电话
  • 计算车辆购置税公式
  • 汽车购置税与消费税
  • 南京税务证明怎么打印
  • 广东省哪里地方考中控证好
  • 西安市人力资源和社会保障局关于2020年
  • 国网成都市局和绵阳市局的区别?
  • 烟叶进口关税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设