带有类引用的自定义属性

dig*_*ino 6 android

我正在尝试创建一个行为类似于tools:context的自定义属性,即

  • Android Studio 自动完成功能
  • 项目类名参考
  • 支持自动重构以防我更改我的类目录

这是我的resources.xml

<declare-styleable name="RecyclerView">
    <attr name="adapter" format="string"></attr>
</declare-styleable>
Run Code Online (Sandbox Code Playgroud)

这是用法

    <example.com.br.appname.RecyclerView
         android:id="@+id/accounts"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_marginTop="8dp"
         app:adapter="example.com.br.appname.AccountAdapter" >
    </example.com.br.appname.RecyclerView>
Run Code Online (Sandbox Code Playgroud)

我试过使用格式参考,但它也没有编译。

错误:(17, 22) 不允许字符串类型(在“适配器”处,值为“example.com.br.appname.AccountAdapter”)。

nat*_*rio 2

我不认为\xe2\x80\x99目前这是可能的。我能想到的其他类似的自定义属性,例如app:layout_behavior来自设计库,或者只是app:layoutManager来自RecyclerView所有需要完整类名的属性,而不需要您的任何要求。

\n\n

最好将它们存储在strings资源文件中,并在重构类名时记得检查它。

\n\n

您可以考虑提交功能请求,因为 Android Studio 在特殊情况下(tools:contextclass<view><fragment>标签、类...),但我怀疑他们会为此添加新的属性格式。

\n

  • 如果这是针对您自己的应用程序(而不是库)并且您有相当少量的适配器,则可以使用 `enum` 属性(例如,`FloatingActionButton` 有一个用于大小、`mini` 和 `normal` 的枚举)用短名称枚举所有适配器。 (2认同)