1. 程式人生 > >【3】windowNoTitle 和 android:windowNoTitle的區別

【3】windowNoTitle 和 android:windowNoTitle的區別

        <item name="windowNoTitle">false</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowNoTitle">false</item>
        <item name="android:windowActionBar">false</item>

AppCompatActivity中出現了windowNoTitle屬性,並且前邊不需要加“android:”

其實windowNoTitle是appcompat-v7中的屬性在appcompat-v7\res\values\values.xml中定義的。
開啟appcompat-v7\res\values\values.xml搜尋AppCompatTheme
<declare-styleable name="AppCompatTheme">中可以找到定義的“windowNoTitle”“windowActionBar”等屬性。

“windowNoTitle”屬性在程式碼中可以使用R.attr.windowNoTitle訪問,
“android:windowNoTitle”則需要使用android.R.attr.windowNoTitle

訪問。



使用AppCompatActivity時(Activity必須使用Theme.AppCompat主題及其子主題),經過測試發現:

  1. “android:windowActionBar”屬性在AppCompatActivity中不起作用;
  2. windowNoTitle = false 並且 android:windowNoTitle = false 時,會出現兩個標題,位於下方的是AppCompatActivity的標題欄。
  3. 當windowNoTitle = false , windowActionBar = false 時,會報錯: AppCompat does not support the current theme features
  4. windowNoTitle = true並且 android:windowNoTitle = true時 ,無標題。


    Theme.AppCompat主題預設的屬性值:
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="windowNoTitle">false</item>
    <item name="windowActionBar">true</item>
V-21
<style name="Platform.AppCompat.Light" parent="android:Theme.Material.Light">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
<style name="Base.V7.Theme.AppCompat.Light" parent="Platform.AppCompat.Light">
    <item name="windowNoTitle">false</item>
    <item name="windowActionBar">true</item>
    <item name="windowActionBarOverlay">false</item>
    <item name="windowActionModeOverlay">false</item>