自定义属性的命名空间自动填充

时间:2015-01-22 00:55:50

标签: android-studio android-custom-view xml-namespaces xml-attribute

我有一个项目" CustomViews"我想在另一个项目中使用它作为一个图书馆"图书馆依赖"。我的一个观点是,ToolbarITI在我在ToolbarITI类中处理的文件中定义了一些自定义属性:

attrs.xml

<resources>

    <declare-styleable name="ToolbarITI">
        <attr name="rightIconSrc" format="integer"/>
        <attr name="leftIconSrc" format="integer"/>
        <attr name="titleText" format="string"/>
        <attr name="iconPadding" format="dimension"/>
        <attr name="fontName" format="string"/>
    </declare-styleable>

</resources>

当我将自定义视图添加到Library Dependent项目中的布局时,我可以在xml文件中添加这些自定义属性,并应用属性。但是, Android Studio在自动填充时无法识别自定义:与ToolbarITI相关的属性,这会使进程变得烦人。我在布局文件的顶部声明了xmlns:custom。

我根本不明白这些属性是如何与库项目捆绑在一起并由Android studio引用的。如果有人能解释如何做到这一点,请提供解释!

1 个答案:

答案 0 :(得分:1)

我需要有人确认这是问题的根源,但这就是我找到的。

我正在将我的.aar上传到com.tommcfarlin.lib,其中包含&#34; lib&#34;导致资源被忽略(根据Android Studio)。虽然我不确定这是否会导致任何事情发生,并且打破了#34;在打包时,它肯定会通过不为自动填充添加资源ID来降低Android Studio的功能。更安全,不要这样做。

我采取的这些步骤导致Android Studio识别自定义属性。

1)我将CustomViews项目中的build.gradle更改为:     请注意com.tommcfarlin.customviews

def aarFile = file("build/${archivesBaseName}-${project.version}.aar")
artifacts {
    archives aarFile
}
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file:///C:/Users/tmcfarlin/AndroidProjects/myrepo")
            pom.groupId = 'com.tommcfarlin.customviews'
            pom.artifactId = 'CustomViews'
            pom.version = '0.1.0'
        }
    }
}

2)我跑了#34; gradle uploadArchives&#34;来自终端

3)在我的Library Dependent项目中,我在build.gradle中有以下几行:

repositories {
    maven { url 'file:///C:/Users/tmcfarlin/AndroidProjects/myrepo' }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.tommcfarlin.customviews:CustomViews:0.1.0@aar'
}

4)我用gradle文件同步了项目。在此之后,我仍然无法看到属性。我关闭了图书馆依赖项目并重新开放瞧!我现在可以使用以下块,当我键入&#34; custom:&#34;时,我的自定义视图的属性已填入我的位置。并按下Ctrl + Space

<com.tommcfarlin.customviews.ToolbarITI
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    custom:fontName="helvetica.ttf">
</com.tommcfarlin.customviews.ToolbarITI>

在学习如何设置本地存储库时,此网页对我非常有用。请务必不要使用&#34; lib&#34;目录!!! http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive-library-aar-across