Stylowe używanie przestrzeni nazw aplikacji


103

Podam przykład, aby zademonstrować większy punkt.

Wyobraź sobie, że moja aplikacja ma wiele FloatingActionButtons. W związku z tym chcę stworzyć jeden styl i użyć go ponownie. Więc robię co następuje:

<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>

Problem, który mam, polega na tym, że kod nie kompiluje się, ponieważ narzeka

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

Próbowałem wprowadzić przestrzeń nazw przez resourcestag, ale to nie działa

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

Jakieś pomysły, jak mogę to uruchomić?


Odpowiedzi:


229

W przypadku appprzestrzeni nazw nie musisz określać app:<property name>. Po prostu <property name>wystarczy.

Na przykład

<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>

A ponieważ layout_anchorGravitymusisz ustawić to w pliku XML, w którym definiujesz pływający przycisk akcji.


Niesamowite! dzięki za pomoc. Niewielka poprawka: możesz zdefiniować również layout_anchorGravityna stronie stylu. Działa jako<item name="layout_anchorGravity">end|bottom</item>
Nouvel Travay

uratowałeś dzień! A ten, który należy zdefiniować lokalnie, to layout_anchor. +1!
Nouvel Travay,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.