Appcompat由android studio项目模板设置。
模板路径为[android-studio-path]/plugins/android/lib/templates。 当创建一个新的活动,它将包括一个配置文件:活动/普通/ common_globals.xml.ftl,它看起来像这样:
<#assign theme=getApplicationTheme()!{ "name": "AppTheme", "isAppCompat": true }>
<#assign themeName=theme.name!'AppTheme'>
<#assign themeNameNoActionBar=theme.nameNoActionBar!'AppTheme.NoActionBar'>
<#assign appCompat=theme.isAppCompat!false>
<#assign appCompatActivity=appCompat && (buildApi gte 22)>
...
<global id="appCompat" type="boolean" value="${((isNewProject!false) || (theme.isAppCompat!false))?string}" />
<global id="appCompatActivity" type="boolean" value="${appCompatActivity?string}" />
...
<#if !appCompat>
<global id="superClass" type="string" value="Activity"/>
...
<#elseif appCompatActivity>
<global id="superClass" type="string" value="AppCompatActivity"/>
...
“程序兼容性”会,如果它是一个新的是真实的项目或项目正在使用appCompat主题(这是默认主题)。所以如果appCompat变量设置为false,它将默认使用Activity。
<#assign appCompat=false>
<global id="appCompat" type="boolean" value="false" />
样式模板也可能需要修改,它们使用appCompat主题。
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat<#if
baseTheme?contains("light")>.Light<#if
baseTheme?contains("darkactionbar")>.DarkActionBar</#if></#if>">
注:如果这些文件被修改,机器人工作室将尝试更新到新版本时,用默认的替换它们。
你应该总是延长'AppCompatActivity',没有理由不这样做。即使您不关心向后兼容性,AppCompatActivity也有许多有用的功能。 –