父级的XML @style

wut*_*aer 5 android android-theme

在android示例中,style-parents被定义为这样

 <style name="GreenText" parent="@android:style/TextAppearance">
Run Code Online (Sandbox Code Playgroud)

但在我发现的android源代码中

<style name="Widget.AppCompat.ActionBar.TabText" parent="Base.Widget.AppCompat.ActionBar.TabText">
Run Code Online (Sandbox Code Playgroud)

当我用@style和@android:样式加前缀时,差异是什么?

DDs*_*six 1

一般来说,如果您将“@android”放在某个内容的前面,则意味着您正在寻找 android 包中定义的资源,而不是您的项目中定义的资源。

例如,如果您想获取一种颜色:

android:background="@android:color/holo_red_dark"
Run Code Online (Sandbox Code Playgroud)

这将获得 Android Holo_red_dark 颜色。您的项目中没有定义此颜色。

android:background="@color/my_red_color"
Run Code Online (Sandbox Code Playgroud)

这将在您的项目中定义您的“my_red_color”。

风格也是如此。

编辑:问题是两者之间没有区别

parent="@style/MyStyle"
Run Code Online (Sandbox Code Playgroud)

parent="MyStyle"
Run Code Online (Sandbox Code Playgroud)

用于在您的项目中编译的样式。你不妨只写

<style name="Widget.AppCompat.ActionBar.TabText" parent="@style/Base.Widget.AppCompat.ActionBar.TabText"> 
Run Code Online (Sandbox Code Playgroud)

它会起作用的。

因此,考虑到Base.Widget.AppCompat.ActionBar.TabText在项目中编译的支持库,您可以添加@style或不添加前缀。然而,@android:style/TextAppearance来自 Android 包,这就是为什么你必须指定@android:为前缀。

我希望现在已经清楚了