我现在正在使用AppCompat Theme来设计UI。在设计此UI时,我发现一些关于样式属性的混淆。
一些项目名称,如果没有以android:xxxx开头,编译将失败,找不到项目名称。
但是其他一些,如果从android:xxxx开始,则不会应用该样式。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowBackground">@android:color/white</item>
<item name="android:colorBackground">@android:color/white</item>
<item name="alertDialogTheme">@style/AppCompatAlertDialogStyle</item>
<item name="autoCompleteTextViewStyle">@style/cursorColor</item>
<item name="editTextStyle">@style/textCursorColor</item>
</style>
<style name="MyToolbarPopupStyle" parent="ThemeOverlay.AppCompat.Light">
<item name="android:colorBackground">@android:color/white</item>
<item name="android:textColor">@android:color/black</item>
<item name="searchViewStyle">@style/MySearchViewStyle</item>
</style>
<style name="textCursorColor" parent="Widget.AppCompat.EditText">
<item name="android:textCursorDrawable">@drawable/text_cursor</item>
</style>
例如:
在appTheme中:如果使用 android:editTextStyle ,则不会应用textCursorColor。所以我需要删除&#34; android:&#34;
在MyToolbarPopupStyle中:如果使用 textColor ,将收到编译错误,找不到与attr匹配的资源。在这种情况下,我需要添加&#34; android:&#34;。
是否有使用规则?或者我需要尝试和错误添加&#34; android:&#34;或不?
答案 0 :(得分:0)
是否有使用规则?或者我需要尝试和错误添加&#34; android:&#34;不是吗?
Android SDK中有attrs
和styleable
个属性,用于定义所有这些值
在styleable
中,android:editTextStyle
为defined as the Default EditText style。
在attrs
,it also says the same thing,但没有android:
前缀
除非您愿意深入了解为这些视图/主题/样式定义的自定义属性的源代码,否则一个是否有效似乎是试验和错误。 (换句话说,android:
在基础SDK中定义)
答案 1 :(得分:0)
项目名称&#34; android:&#34;是特定于Android的,而没有android:是您继承的主题或样式中定义的自定义属性。
例如&#34; searchViewStyle&#34;是&#34; ThemeOverlay.AppCompat.Light&#34;
中定义的自定义属性