Android XML 有没有办法使用自定义属性的工具命名空间?
Android XML Is there a way to use the tool namespace with custom attributes?
我创建了一个带有属性的自定义视图。有没有办法在 Android studio 中通过 android 工具使用这些属性?
例如:
<MyOwnCoolView
android:layout_width="96dp"
android:layout_height="96dp"
android:padding="3dp"
tools:dividerAngle="2"/>
attr 文件所在位置:
<resources>
<declare-styleable name="MyOwnCoolView">
<attr name="dividerAngle" format="float"/>
</declare-styleable>
我的意见是你不能。
有一位官员,虽然 非常 旧,页面 here 引用了:
Designtime attributes can only be used for framework resources, not
custom attributes at this point.
我一直在寻找同样的东西。决定建立一个允许人们这样做的图书馆。 https://github.com/giljulio/sneakpeek
我编写了一个小型库,允许您为视图定义设计时属性:https://github.com/paulmanta/app-tools-attrs
首先,您必须在设计时声明您想要的单独属性:
<declare-styleable name="MyWidget">
<attr name="title" format="string"/>
<attr name="tools_title" format="string"/>
</declare-styleable>
最后,当您初始化自定义视图时,使用 AppToolsAttrs
class 而不是直接从 TypedArray
:
访问属性
AppToolsAttrs.getString(a, isInEditMode(), R.styleable.MyWidget_title, R.styleable.MyWidget_tools_title)
然后您可以像这样使用设计时属性:
<com.myapplication.MyWidget
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tools_title="Lorem ipsum"
app:title="@string/real_title"/>
使用允许您执行此操作的不同库。他的实现非常聪明,它允许您使用实际的 tools:
命名空间而无需复制属性。不幸的是,它与 Android Studio 的自动完成功能不兼容。
我创建了一个带有属性的自定义视图。有没有办法在 Android studio 中通过 android 工具使用这些属性?
例如:
<MyOwnCoolView
android:layout_width="96dp"
android:layout_height="96dp"
android:padding="3dp"
tools:dividerAngle="2"/>
attr 文件所在位置:
<resources>
<declare-styleable name="MyOwnCoolView">
<attr name="dividerAngle" format="float"/>
</declare-styleable>
我的意见是你不能。
有一位官员,虽然 非常 旧,页面 here 引用了:
Designtime attributes can only be used for framework resources, not custom attributes at this point.
我一直在寻找同样的东西。决定建立一个允许人们这样做的图书馆。 https://github.com/giljulio/sneakpeek
我编写了一个小型库,允许您为视图定义设计时属性:https://github.com/paulmanta/app-tools-attrs
首先,您必须在设计时声明您想要的单独属性:
<declare-styleable name="MyWidget">
<attr name="title" format="string"/>
<attr name="tools_title" format="string"/>
</declare-styleable>
最后,当您初始化自定义视图时,使用 AppToolsAttrs
class 而不是直接从 TypedArray
:
AppToolsAttrs.getString(a, isInEditMode(), R.styleable.MyWidget_title, R.styleable.MyWidget_tools_title)
然后您可以像这样使用设计时属性:
<com.myapplication.MyWidget
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tools_title="Lorem ipsum"
app:title="@string/real_title"/>
tools:
命名空间而无需复制属性。不幸的是,它与 Android Studio 的自动完成功能不兼容。