问题
I've created a custom view with attributes. Is there a way to use those attributes with android tools in Android studio?
for example :
<MyOwnCoolView
android:layout_width="96dp"
android:layout_height="96dp"
android:padding="3dp"
tools:dividerAngle="2"/>
Where the attr file is :
<resources>
<declare-styleable name="MyOwnCoolView">
<attr name="dividerAngle" format="float"/>
</declare-styleable>
回答1:
My opinion is that you can't.
There's an official, though very old, page here that quotes:
Designtime attributes can only be used for framework resources, not custom attributes at this point.
回答2:
I was looking for the same thing for a while now. Decided to make a library that allows one to do it. https://github.com/giljulio/sneakpeek
回答3:
I've written a tiny library that allows you define design-time attributes for your views: https://github.com/paulmanta/app-tools-attrs
Firstly, you have to declare separate attributes that you want to as at design-time:
<declare-styleable name="MyWidget">
<attr name="title" format="string"/>
<attr name="tools_title" format="string"/>
</declare-styleable>
Finally, when you initialize your custom view use the AppToolsAttrs
class instead of accessing attributes directly from a TypedArray
:
AppToolsAttrs.getString(a, isInEditMode(), R.styleable.MyWidget_title, R.styleable.MyWidget_tools_title)
You can then use your design-time attributes like this:
<com.myapplication.MyWidget
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tools_title="Lorem ipsum"
app:title="@string/real_title"/>
Gil already posted an answer with a different library that allows you do this. His implementation is really smart and it allows you to use the actual tools:
namespace without having to duplicate attributes. Unfortunately, it's incompatible with Android Studio's auto-complete feature.
来源:https://stackoverflow.com/questions/33370878/android-xml-is-there-a-way-to-use-the-tool-namespace-with-custom-attributes