Использование пространства имен приложения в стиле


105

Я собираюсь привести пример, чтобы продемонстрировать главное.

Представьте, что в моем приложении есть несколько кнопок FloatingActionButton. Следовательно, я хочу создать один стиль и повторно использовать его. Итак, я делаю следующее:

<style name="FabStyle” parent ="Widget.Design.FloatingActionButton">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_margin">16dp</item>
    <item name="app:backgroundTint">@color/accent</item>
    <item name="app:layout_anchorGravity">end|bottom</item>
</style>

Проблема, с которой я столкнулся, заключается в том, что код не компилируется, потому что он жалуется на

Error:(40, 5) No resource found that matches the given name: attr 'app:backgroundTint'.

Я попытался ввести пространство имен через resourcesтег, но это не работает

<resources
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >

Есть идеи, как я могу заставить это работать?


Ответы:


232

Для appпространства имен указывать не нужно app:<property name>. Просто <property name>достаточно.

Например

<style name="FabStyle" parent="Widget.Design.FloatingActionButton"> 
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_margin">16dp</item>
    <item name="backgroundTint">@color/accent</item>
    <item name="layout_anchorGravity">end|bottom</item>
</style>

И layout_anchorGravityвам нужно установить его в XML-файле, в котором вы определяете плавающую кнопку действия.


Потрясающие! Спасибо за помощь. Небольшое исправление: вы также можете определить layout_anchorGravityна странице стилей. Это работает как<item name="layout_anchorGravity">end|bottom</item>
Нувель Травей

вы спасли день! И тот, который нужно определить локально, - это layout_anchor. +1!
Nouvel Travay 05
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.