如何以编程方式将项添加到xml?

时间:2014-02-12 10:07:38

标签: android android-xml

我尝试将项目添加到xml包含的项目如:

<item android:id="@+id/home3" android:title="Home" android:icon="@drawable/home"></item>
<item android:id="@+id/home3" android:title="Home2" android:icon="@drawable/home2"></item>
<item android:id="@+id/home3" android:title="Home3" android:icon="@drawable/home3"></item> 

我想以编程方式(动态)添加到此xml。

1 个答案:

答案 0 :(得分:1)

取决于您正在谈论的XML。情侣:

  • 您无法在运行时添加资源。
  • 您无法在运行时更改AndroidManifest

但是,我认为重要的部分是为什么你想要这样做。我猜测你正试图从同一个代码库构建不同的APK。你可以那样做!资源,AndroidManifest甚至类都可以在构建时换出来!

答案是product flavors。要实现它们,您需要做两件事:

  1. 为项目中的特定目录添加新资源。
  2. 将这些风格添加到build.gradle文件中。
  3. 步骤1:添加要交换的文件

    这是一个示例应用程序布局。还有其他目录我没有包含,因为他们并不需要说明我的观点:

    ├─ app
    │  ├─ src
    │  │  └─ main
    │  │     ├─ java
    │  │     │  └─ com/example/project
    │  │     ├─ res
    │  │     └─ AndroidManifest.xml
    │  │  └─ productFlavor
    │  │     ├─ java
    │  │     │  └─ com/example/project
    │  │     ├─ res
    │  │     └─ AndroidManifest.xml
    │  ├─ build.gradle
    

    您不必在每种风格中包含所有目录。正如资源将会落在&#34;如果某些东西不存在,那么产品口味的工作方式也是一样的。

    所以,如果我有调试或付费产品的味道,如果我希望它们是相同的,我不必包含不同的启动器图标。只有我希望它们与众不同。

    第2步:定义产品口味

    build.gradle改为看起来像这样。您可以覆盖defaultConfig中几乎所有可用的选项 - 可能还有更多。我还没有达到极限:

    android {
        defaultConfig {
            applicationId 'com.example.project'
            versionCode 4
            versionName '4.0'
        }
        productFlavors {
            project1 {
                applicationId 'com.example.project1'
                versionCode 1
                versionName '1.0'
            }
            project2 {
                applicationId 'com.example.project2'
                versionCode 2
                versionName '2.0'
            }
        }
    }