我有一个基于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不同的任何内容时,会出现错误,声称属性无法解析。
有人找到了解决方法吗?
干杯。
答案 0 :(得分:3)
最后使用xmlns修复它:grid =“http://schemas.android.com/apk/res-auto”让它在布局文件中为我解析包而不是完整的包名。