Android XML Есть ли способ использовать пространство имен инструмента с пользовательскими атрибутами?
Я создал собственный вид с атрибутами. Есть ли способ использовать эти атрибуты с инструментами Android в Android Studio?
например:
<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>
3 ответа
Мое мнение, что вы не можете.
Здесь есть официальная, хотя и очень старая страница, которая цитирует:
Атрибуты времени разработки могут использоваться только для ресурсов платформы, но не для пользовательских атрибутов.
Я искал то же самое некоторое время сейчас. Решил сделать библиотеку, которая позволит это сделать. 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
класс вместо доступа к атрибутам непосредственно из 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.