AndroidStudio更换xml默认的布局


对本知识点有任何问题,可加我的个人微信:kymjs666

自从 AndroidStudio 到 2.3 了以后,新建一个 Activity,默认的布局就从以前的 LinearLayout 变成了 Google 强推的 ConstraintLayout,但其实这个布局是可以被修改的。

在 Mac 上改默认布局(Windows可以自己找对应的目录),需要编辑这个文件:

/Applications/Android\ Studio.app/Contents/plugins/android/lib/templates/activities/common/root/res/layout/simple.xml.ftl   

同时附赠一个 AndroidStudio 中使用 Kotlin 默认的依赖是依赖了 kotlin-jre,而这个 jre 早就被改jetbrain废弃了,修改 jre 为 jdk 可以编辑这个文件。

Applications/Android\ Studio.app/Contents/plugins/android/lib/templates/activities/common/kotlin_macros.ftl  

下面是我自己使用的两个文件的内容,你可以直接复制走:

// simple.xml.ftl 文件的

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button"/>

</LinearLayout>

// kotlin_macros.ftl 文件的

<#-- Macro used to add the necessary dependencies to support kotlin to
an app build.gradle -->

<#macro addKotlinPlugins>
<#if generateKotlin>
<#compress>
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
</#compress>
</#if>
</#macro>

<#macro addKotlinDependencies>
<#if generateKotlin>${getConfigurationName("compile")} "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"</#if>
</#macro>

// TODO: <apply plugin /> Is adding the dependencies at the *end* of build.gradle
// TODO: The two macros above, addKotlinPlugins and addKotlinDependencies, are duplicating the work of addAllKotlinDependencies, when
//       creating a new project (isNewProject == true). The only reason is the above bug on <apply plugin />
<#macro addAllKotlinDependencies>
  <#if (language!'Java')?string == 'Kotlin'>
    <#if !isNewProject>
      <apply plugin="kotlin-android" />
      <apply plugin="kotlin-android-extensions" />
    </#if>
    <#if !hasDependency('org.jetbrains.kotlin:kotlin-stdlib')>
        <dependency mavenUrl="org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"/>
        <merge from="root://activities/common/kotlin.gradle.ftl"
                 to="${escapeXmlAttribute(projectLocation)}/build.gradle" />
    </#if>
  </#if>
</#macro>