【转】 Android xml中 @和?区别,style和attr小结
引用资源时,使用@还是?的区别,例如在设置style的时候既可以使用@也可以使用?
 style="?android:attr/progressBarStyleHorizontal"
 style="@android:style/Widget.ProgressBar.Horizontal"
使用@表示使用固定的style,而不会跟随Theme改变,这style可以在对应的style.xml中找到。 
而?表示从Theme中查找引用的资源名,例如上面的progressBarStyleHorizontal,查看\platforms\Android-23\data\res\values\themes.xml文件,可以看到在不同的theme中,progressBarStyleHorizontal引用的style是不同的。如
在Theme中
<item name="progressBarStyleHorizontal">@style/Widget.ProgressBar.Horizontal</item>
Theme.Holo中为
 <item name="progressBarStyleHorizontal">@style/Widget.Holo.ProgressBar.Horizontal</item>
1、在styles.xml中定义style标签的parent的时候
自带属性,以下使用方式等同
<style name="AppThemeSdk1" parent="@android:style/Widget.ProgressBar.Horizontal">
    </style>
    <style name="AppThemeSdk2" parent="android:style/Widget.ProgressBar.Horizontal">
    </style>
    <!--studio 不提示 但不报错 可用-->
    <style name="AppThemeSdk3" parent="android:style/Widget.ProgressBar.Horizontal">
    </style>
     <!--studio 不提示 但不报错 可用-->
    <style name="AppThemeSdk4" parent="android:Widget.ProgressBar.Horizontal">
    </style>
自定义属性,以下使用方式等同
   <style name="AppThemeCustom1" parent="Widget.AppCompat.ProgressBar.Horizontal">
    </style>
    <style name="AppThemeCustom2" parent="@style/Widget.AppCompat.ProgressBar.Horizontal">
    </style>
     <!--studio 不提示 但不报错 可用-->
    <style name="AppThemeCustom3" parent="style/Widget.AppCompat.ProgressBar.Horizontal">
    </style>
2、style作为xml中定义的属性时候
<!--自定义的-->
@style/Widget.AppCompat.ProgressBar.Horizontal
<!--系统自带的-->
@android:style/Widget.ProgressBar.Horizontal
3、? attr
<!--系统自带的 ,以下使用方式等同-->
"?android:属性"
"?android:attr/属性"
<!--自定义的  ,以下使用方式等同-->
"?attr/属性"
"?属性"
另外: 
当引用系统自带的style和attr时
"@android:style/主题"和"@style/android:主题"等同
"?android:attr/属性"和"?attr/android:属性"等同
from:http://blog.csdn.net/RichieZhu/article/details/52490521
【转】 Android xml中 @和?区别,style和attr小结的更多相关文章
- Android XML中引用自定义内部类view的四个why
		
今天碰到了在XML中应用以内部类形式定义的自定义view,结果遇到了一些坑.虽然通过看了一些前辈写的文章解决了这个问题,但是我看到的几篇都没有完整说清楚why,于是决定做这个总结. 使用自定义内部类v ...
 - android xml中使用include标签
		
在一个项目中,我们可能会在xml中局部用到相同的布局,如果每次都在xml中重写这些布局,代码显得很冗余.重复的复制黏贴也很烦恼,所以,我们把这些相同的局部布局写成一个单独的xml模块,需要用到这些布局 ...
 - 4、android xml中drawableTop(drawableBoottom、drawableLeft、drawableRight)在java代码中的动态配置
		
做安卓开发的朋友都知道,我们在xml中可以通过这样来对button设置其上部或者(下.左.右)的图片资源: 那么如果需要动态配置图片呢?我们不得不使用java代码来进行操作: Drawable dra ...
 - android xml中的xliff属性
		
<resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff=" ...
 - Android开发之Theme、Style探索及源码浅析
		
1 背景 前段时间群里有伙伴问到了关于Android开发中Theme与Style的问题,当然,这类东西在网上随便一搜一大把模板,所以关于怎么用的问题我想这里也就不做太多的说明了,我们这里把重点放在理解 ...
 - Android开发中的PhoneGap基本使用
		
一.关于PhoneGap Phonegap是一款开源的开发框架,旨在让开发者使用HTML.Javascript.CSS等Web APIs开发跨平台的移动应用程序. 二.PhoneGap在Andro ...
 - (转载)Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别
		
原帖地址:http://blog.csdn.net/zfrong/article/details/7332545 Android xml资源文件中@.@android:type.@*.?.@+引用写法 ...
 - Android xml资源文件中@、@android:type、@*、?、@+含义和区别
		
一.@代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@andr ...
 - 【转】Android xml资源文件中@、@android:type、@*、?、@+含义和区别
		
一.@代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@andr ...
 
随机推荐
- js 数组删除元素,并获得真实长度
			
前言:js数组删除一般采用数组的 splice 方法和 delete 方法,但是采用 delete 方法后直接数组.kength 来获取数组长度是获取不了真实长度的,下面详细讲解一下. 一.splic ...
 - monggo查询语法
			
db.getCollection('vvt_user_reward').find({"description":"双节活动"})
 - DNS必知必会
			
什么是DNS? DNS服务器(Domain Name Server,域名服务器)是进行域名和与之相对应的IP地址进行转换的服务器. 基本概念 DNS服务器中保存了一张域名和与之相对应的IP地址 的表, ...
 - jQuery基础(样式篇,DOM对象,选择器,属性样式)
			
1. $(document).ready 的作用是等页面的文档(document)中的节点都加载完毕后,再执行后续的代码,因为我们在执行代码的时候,可能会依赖页面的某一个元素,我们要确保这个元素真 ...
 - H5学习入门
			
[块级标签与行级标签的区别] 1.块级标签: 默认宽度100%(独占一行) 自动换行(右边不能有任何东西) 可以使用css设置宽度高度 2.行级标签: 内容宽度,由内容撑开(内容多宽,宽度就占多宽 ...
 - 涉及到【分页】的table的请求模式
			
step:1 点击分页器的内容 trigger事件句柄 (pagination, filters, sorter) => {//或者(page, pageSize)等 this.props.on ...
 - iview select下拉bug
			
1场景:弹框内有一个下拉组件(支持搜索),当选择完数据后弹框关闭,再次打开后,下拉框内的数据是刚才选中的数据.原因:分析后觉得是搜索内容没有清空,导致下拉的数据只有一个解决:调用下setQuery方法 ...
 - PHP isset()与empty()的使用区别
			
PHP的isset()函数 一般用来检测变量是否设置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 功能:检测变量是否设置 返回值: 若变量不存在 ...
 - ADB指令大全
			
Android Debug Bridge version 1.0.26.26 -a - directs adb to listen on all interfaces for a connection ...
 - 【转】用JS完成手机短信验证按键点击事件
			
原地址:https://gitee.com/RainVanilla/codes/i7jske4wdogvnb0apmfx571 试了一下,效果还可以,留着备用! <!DOCTYPE html&g ...