zoukankan      html  css  js  c++  java
  • 【转】 Android xml中 @和?区别,style和attr小结

    引用资源时,使用@还是?的区别,例如在设置style的时候既可以使用@也可以使用?

     style="?android:attr/progressBarStyleHorizontal"
     style="@android:style/Widget.ProgressBar.Horizontal"

    使用@表示使用固定的style,而不会跟随Theme改变,这style可以在对应的style.xml中找到。 
    而?表示从Theme中查找引用的资源名,例如上面的progressBarStyleHorizontal,查看platformsAndroid-23data esvalues hemes.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

     
     
  • 相关阅读:
    基于发布/订阅模型的应用程序的主循环设计
    C++使用继承时子对象的内存布局
    安装 CentOS 后的系统配置及软件安装备忘
    环形无锁队列
    并发编程基础
    线程池实现
    Git远程操作
    Unix权限管理
    jquery中,某些写法后来更新导致版本不支持的替代方法
    js相关
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/6398631.html
Copyright © 2011-2022 走看看