Android中attrs.xml文件的使用详解

$*********************************************************************************************$


博主推荐:


风萧兮兮易水寒,“天真”一去兮不复还。如何找到天真的那份快乐。小编倾力推荐app: 天真无谐


下载方式:豌豆荚,应用宝,360手机助手,百度手机助手,安卓,91市场搜索:天真无谐


关注我们:查看详情


$*********************************************************************************************$


Android中在values中定义一个attrs.xml,然后自己定义一个组件MyView

attrs.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>     
<resources>     <declare-styleable name="MyView">     <attr name="textColor" format="color" />     <attr name="textSize" format="dimension" />     </declare-styleable>     
</resources> 

定义的组件MyView:

package com.jiangwei.demo;import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;public class MyView extends View {
private Paint mPaint;
private static final String mString = "Welcome to Mr Wei's blog";
public MyView(Context context) {
super(context);
mPaint = new Paint();
}public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
mPaint = new Paint();
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyView);
int textColor = a.getColor(R.styleable.MyView_textColor, 0XFFFFFFFF);
float textSize = a.getDimension(R.styleable.MyView_textSize, 36);
mPaint.setTextSize(textSize);
mPaint.setColor(textColor);
a.recycle();
}@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
// 设置填充
mPaint.setStyle(Style.FILL);
// 画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标
canvas.drawRect(new Rect(10, 10, 100, 100), mPaint);
mPaint.setColor(Color.BLUE);
// 绘制文字
canvas.drawText(mString, 10, 110, mPaint);
}
}

main.xml内容:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:test="http://schemas.android.com/apk/res/com.jiangwei.demo"//一定记得添加前缀android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><com.jiangwei.demo.MyView
android:layout_width="fill_parent" android:layout_height="fill_parent" test:textSize="20px"//test是个前缀test:textColor="#ffffff"/>
</LinearLayout>


具体内容:

格式如上,其中“xmlns:wen”冒号后面是标签名,在下面使用时(只对当前文件可用)
<TextView  wen:属性名/>
“com.iteye.googlers”是你的工程包名。
1. reference:参考某一资源ID。
    (1)属性定义:
            

<declare-styleable name = "名称"><attr name = "background" format = "reference" />
</declare-styleable>

    (2)属性使用:
            
<ImageViewandroid:layout_width = "42dip"android:layout_height = "42dip"android:background = "@drawable/图片ID"/>


2. color:颜色值。
    (1)属性定义:
            

<declare-styleable name = "名称"><attr name = "textColor" format = "color" /></declare-styleable>

    (2)属性使用:
           
 <TextViewandroid:layout_width = "42dip"android:layout_height = "42dip"android:textColor = "#00FF00"/>

 3. boolean:布尔值。
    (1)属性定义:
            
<declare-styleable name = "名称"><attr name = "focusable" format = "boolean" />
</declare-styleable>

    (2)属性使用:
            
<Buttonandroid:layout_width = "42dip"android:layout_height = "42dip"android:focusable = "true"/>

4. dimension:尺寸值。
     (1)属性定义:
             
<declare-styleable name = "名称"><attr name = "layout_width" format = "dimension" />
</declare-styleable>

    (2)属性使用:
            
<Buttonandroid:layout_width = "42dip"android:layout_height = "42dip"/>

 5. float:浮点值。
    (1)属性定义:
            
<declare-styleable name = "AlphaAnimation"><attr name = "fromAlpha" format = "float" /><attr name = "toAlpha" format = "float" />
</declare-styleable>

    (2)属性使用:
            
<alphaandroid:fromAlpha = "1.0"android:toAlpha = "0.7"
/>
 
6. integer:整型值。
    (1)属性定义:
            
<declare-styleable name = "AnimatedRotateDrawable"><attr name = "visible" /><attr name = "frameDuration" format="integer" /><attr name = "framesCount" format="integer" /><attr name = "pivotX" /><attr name = "pivotY" /><attr name = "drawable" />
</declare-styleable>

    (2)属性使用:
            
<animated-rotatexmlns:android = "http://schemas.android.com/apk/res/android"  android:drawable = "@drawable/图片ID"  android:pivotX = "50%"  android:pivotY = "50%"  android:framesCount = "12"  android:frameDuration = "100"/>
 
7. string:字符串。
    (1)属性定义:
            
<declare-styleable name = "MapView"><attr name = "apiKey" format = "string" />
</declare-styleable>

    (2)属性使用:
            
<com.google.android.maps.MapViewandroid:layout_width = "fill_parent"android:layout_height = "fill_parent"android:apiKey = "0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g"/>

8. fraction:百分数。
     (1)属性定义:
            
<declare-styleable name="RotateDrawable"><attr name = "visible" /><attr name = "fromDegrees" format = "float" /><attr name = "toDegrees" format = "float" /><attr name = "pivotX" format = "fraction" /><attr name = "pivotY" format = "fraction" /><attr name = "drawable" />
</declare-styleable>

    (2)属性使用:
            
<rotatexmlns:android = "http://schemas.android.com/apk/res/android" android:interpolator = "@anim/动画ID"android:fromDegrees = "0" android:toDegrees = "360"android:pivotX = "200%"android:pivotY = "300%" android:duration = "5000"android:repeatMode = "restart"android:repeatCount = "infinite"/>

9. enum:枚举值。
    (1)属性定义:
            
<declare-styleable name="名称"><attr name="orientation"><enum name="horizontal" value="0" /><enum name="vertical" value="1" /></attr>            
</declare-styleable>

    (2)属性使用:

<LinearLayoutxmlns:android = "http://schemas.android.com/apk/res/android"android:orientation = "vertical"android:layout_width = "fill_parent"android:layout_height = "fill_parent">
</LinearLayout>

10. flag:位或运算。
     (1)属性定义:

 <declare-styleable name="名称"><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>         
</declare-styleable>

     (2)属性使用:
            
<activityandroid:name = ".StyleAndThemeActivity"android:label = "@string/app_name"android:windowSoftInputMode = "stateUnspecified | stateUnchanged | stateHidden"><intent-filter><action android:name = "android.intent.action.MAIN" /><category android:name = "android.intent.category.LAUNCHER" /></intent-filter>
</activity>


     注意:
     属性定义时可以指定多种类型值。
    (1)属性定义:
            
<declare-styleable name = "名称"><attr name = "background" format = "reference|color" />
</declare-styleable>

    (2)属性使用:
             
<ImageViewandroid:layout_width = "42dip"android:layout_height = "42dip"android:background = "@drawable/图片ID|#00FF00"/>

转载于:https://www.cnblogs.com/roccheung/p/5797446.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

细说JavaScript对象(1):对象的使用和属性

JavaScript 中的一切都可以视为对象&#xff0c;除了两个特例&#xff1a;null 和 undefined。 false.toString(); // false [1, 2, 3].toString(); // 1,2,3function Foo(){} Foo.bar 1; Foo.bar; // 1 一个经常容易被误解的就是数字常量不能视为对象&#xff0c;实际上数字常…

学习笔记:InnoDB存储结构及多版本实现

因为InnoDB是多版本化的数据库存储引擎, 它必须在表空间中保存关于旧版本数据行的信息。这个信息被存在名为rollback segment&#xff08;类似于Oracle中的回滚段&#xff09;的数据结构中。 在内部&#xff0c;InnoDB给数据库中的每一行添加三个域。一个是6字节的DB_TRX_ID域&…

access2003的使用

access2003中如何用sql语句创建表 http://zhidao.baidu.com/link?urldinVbwoI20Xz__NbcIeBPdkjeXRWmZNB0xJvdr0eMBqNflv_JcWgUoPw3ozFfqnTQ9FLkNv0XXs9loDR2Oc7Oq SQL 数据定义查询创建表&#xff1a; 第一张表&#xff08;藏书&#xff09; CREATE TABLE 藏书 (书号 Text(10)…

再见安卓 鸿蒙,安卓系统:鸿蒙系统,正式再见

原标题&#xff1a;安卓系统&#xff1a;鸿蒙系统&#xff0c;正式再见华为手机不能使用谷歌GMS服务已经差不多一年时间&#xff0c;据悉华为明年最新旗舰P40系列仍然不能使用GMS&#xff0c;最近爆料大神数码闲聊站称谷歌将不给华为手机授权Android R(安卓11系统)&#xff0c;…

Android 隐式意图的配置

本文地址&#xff1a;http://www.cnblogs.com/wuyudong/p/5677473.html&#xff0c;转载请注明源地址。 《Android 显示意图激活另外一个Actitity》一文介绍了一种激活Activity的方法 本文通过清单文件&#xff08;AndroidManifest.xml&#xff09;来实现意图的配置 Intent-fil…

fpga中wire和reg的区别

wire表示直通&#xff0c;即只要输入有变化&#xff0c;输出马上无条件地反映&#xff1b;reg表示一定要有触发&#xff0c;输出才会反映输入。wire表示直通&#xff0c;即只要输入有变化&#xff0c;输出马上无条件地反映&#xff1b;reg表示一定要有触发&#xff0c;输出才会…

Django Tips

新加admin.py需重启自带Web服务器才能显示Admin保存设置外键的默认值http://stackoverflow.com/questions/937954/how-do-you-specify-a-default-for-a-django-foreignkey-model-or-adminmodel-fieldhttp://stackoverflow.com/questions/5632848/django-default-value-for-user…

wordpress html音乐,WordPress引用百度Ting音乐方法

对于个人博客来说&#xff0c;要在文章中添加音乐&#xff0c;如果放在自己服务器上&#xff0c;一方面是成本问题&#xff0c;其次&#xff0c;大部分博主用的国外服务器&#xff0c;而国外对版权看得比较重&#xff0c;基本上不允许上传音乐&#xff0c;所以我们通常都是通过…

开发工具MyEclipse如何支持可视化设计HTML和JSP页面

转自&#xff1a;http://tigerben.iteye.com/blog/722128 这两天一直在设计和开发JSP页面&#xff0c;所有标签都得通过自己手工编辑深感厌烦&#xff0c;印象中以前是有看到过MyEclipse是支持拖放HTML常用控件的&#xff0c;所以为此百度了一把&#xff0c;终有所获。 MyEclip…

转:c# Linq 的分页[转]

转&#xff1a;http://www.cnblogs.com/leleroyn/archive/2008/05/14/1196811.html 很多学习Linq的朋友肯定有自己所不同的方法&#xff0c;考虑这个问题我所想到的是 用Take(),Skip(),TakeWhile(),SkipUntil()中的方法来实现 首先看Take()是否可用 Take方法的作用是从结果中取…

html edge浏览器 图片,浏览器时序图及 Microsoft Edge 构架

本文又是我的作业&#xff0c;完成思路借鉴了 版权说明。作业要求针对一款典型浏览器&#xff0c;绘制浏览器处理时序图对用户界面进行操作(如拖拽窗口)带有 JavaScript 脚本 HTML 文档查阅资料&#xff0c;绘制 Edge 浏览器的参考架构浏览器时序图对用户界面进行操作(如拖拽窗…

您需要了解的跨阻放大器——第1部分

跨阻放大器&#xff08;TIA&#xff09;是光学传感器&#xff08;如光电二极管&#xff09;的前端放大器&#xff0c;用于将传感器的输出电流转换为电压。跨阻放大器的概念很简单&#xff0c;即运算放大器&#xff08;op amp&#xff09;两端的反馈电阻&#xff08;RF&#xff…

Objective-C组合模式(Composite)

什么是组合模式&#xff1f; 官方&#xff1a;将对象组合成树形结构以表示“部分-整体”的层次结构&#xff0c;组合模式使用户使用单独对象和组合对象具有一致性。 个人理解&#xff1a;组合模式就相当于一个大家族&#xff0c;每个人都是家族中的一部分&#xff0c;整个家族就…

WP7应用开发笔记(3) 界面设计

界面设计 回顾一下按钮清单&#xff1a; 播放控制播放/暂停Space 停止F4 快进Right 快退Left 快进X2ControlRight 快退X2ControlLeft 快进X3AltRight 快退X3AltLeft音量放大Up 缩小Down 静音M节目下一个PageDown 上一个PageUp基本上就是把这些按钮布置到480*800的屏幕上。 快进…

html手机显示评论列表页面,请问如何完美显示评论列表头像

目前具体思路是通过轮询构建头像&#xff0c;条件是通过判断评论区条目length。问题是有时依然无法显示评论区头像。以下是目前的代码&#xff1a;function showAvatar() {$(.feedbackItem).each(function() {let avatar $(this).children(.feedbackCon).children(span:last).…

几何画板中可以这样选择对象

在使用几何画板过程中&#xff0c;一些用户朋友发现几何画板虽然是在Windows平台上运行的软件&#xff0c;但它选择对象的选择方式常常与一般的Windows绘图软件是有一些差别的&#xff0c;下面将通过详细的讲解&#xff0c;让大家对几何画板选择对象方法有比较系统全面的了解。…

2012 不宜进入的三个技术点(下)

赖勇浩&#xff08;http://laiyonghao.com&#xff09;CC 在 2011 年其实风头甚劲&#xff0c;C2011 标准出台&#xff0c;gcc/msvc/clang 都很快速地支持了许多新特性&#xff0c;新兴的移动设备的性能较差&#xff0c;更是 C 的新舞台&#xff0c;在这个时候唱衰 C&#xff0…

菜鸟做HTML5小游戏 - 刮刮乐

继上篇翻翻乐之后&#xff0c;又来刮刮乐。还是先上效果图&#xff1a; 开始demo的世界&#xff1a; 1.css去绘制界面效果。&#xff08;源码提供&#xff09; 2.原理&#xff1a;要实现刮刮卡内容的出现&#xff0c;我用div做了背景层去显示刮出的内容结果【重点】。中间Canva…

1 计算机主机里面都有些什么东西,计算机主机和外设分别包括那些东西?

___耐撕Nice___的回答&#xff1a;1、主机是指计算机除去输入输出设备以外的主要机体部分。也是用于放置主板及其他主要部件的控制箱体(容器Mainframe)。通常包括 CPU、内存、主板、光驱、电源、以及其他输入输出控制器和接口。在网络技术中是关于发送与接收信息的终端设备。2、…

AppDynamics赵宇辰:硅谷APM独角兽,打造DevOps领域的智能大脑

近来&#xff0c;关于机器学习的报道很多&#xff0c;国内外的大型互联网企业都在着手对机器学习的研究。对应用性能的高效管理&#xff0c;首先要了解应用的一手数据&#xff0c;通过传统的数据获取方式已经不能满足企业的发展和市场环境&#xff0c;这就需要借助机器学习的技…