Gradle flavor,applicationId和未解析的自定义视图属性

时间:2015-01-19 22:00:32

标签: android-gradle android-custom-view android-productflavors

我有一个基于GridLayout的自定义视图:

package com.mycompany.myapp;

...

public class GridLayoutForceSizeCells extends GridLayout
{
}

我已经为这个类定义了一个带有自定义属性的xml:

<?xml version="1.0" encoding="utf-8" ?>
<resources>
    <declare-styleable name="GridLayoutForceSizeCells">
        <attr name="totalImages" format="integer" />
        <attr name="desiredColumnCount" format="integer" />
        <attr name="spacing" format="dimension" />
        <attr name="autoGenerate" format="boolean" />
    </declare-styleable>
</resources>

然后,我有一个使用它的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:wheel="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

 <com.mycompany.myapp.GridLayoutForceSizeCells
        xmlns:grid="http://schemas.android.com/apk/res/com.mycompany.myapp"
        android:padding="3dp"
        android:id="@+id/cellsGrid"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        grid:desiredColumnCount="20"
        grid:totalImages="0"
        grid:spacing="1dp"
        android:orientation="horizontal"/>

</LinearLayout>

我遇到的问题是,当我通过gradle更改applicationId时,自定义属性未解析。我已经在gradlew帮助中读到,当使用gradlew applicationId条目解耦时,应用程序包是用于R的应用程序包。因此,applicationId不应该影响我的自定义属性包。但是当我将applicationId设置为与com.mycompany.myapp不同的任何内容时,会出现错误,声称属性无法解析。

有人找到了解决方法吗?

干杯。

1 个答案:

答案 0 :(得分:3)

最后使用xmlns修复它:grid =“http://schemas.android.com/apk/res-auto”让它在布局文件中为我解析包而不是完整的包名。