2016-05-18 67 views
6

Używam własnej biblioteki. W tej bibliotece mam zdefiniowane pewne zasoby:Zastąp zasoby w bibliotece Android

colors.xml (Library)

<color name="colorPrimary">#000000</color> 

w mojej aplikacji (który wykorzystuje bibliotekę powyżej). Chcę zastąpić podstawowy kolor.

colors.xml (app)

<color name="colorPrimary">#ffffff</color> 

I rzeczywiście chcą przesłonić tego atrybutu tak, że biblioteka (i mój app) używać overrided jeden, a nie deklarowana jeden z biblioteki. Działa dobrze, ale Android Studio ciągle krzyczy: "Zastąpienie @ color/colorPrimary, które jest oznaczone jako prywatne w my_lib. Jeśli celowe, użyj narzędzi: override =" true ", w przeciwnym razie wybierz inną nazwę". To sprawia, że ​​myślę, że to nie jest dobre podejście.

Staram się też dodawać narzędzi: przesłonić = "true" do zasobu:

<resources xmlns:tools="http://schemas.android.com/tools" 
     tools:override="true"> 

ale ostrzeżenie nadal.

Czy coś jest nie w porządku z tym, co robię? Nie mogę wybrać innej nazwy, ponieważ chcę, aby biblioteka używała nadpisanych wartości.

Używam wersji Androida 2.1.1 i wersji 2.1.0.

Dzięki.

+1

jak dodać atrybut "override" do elementu koloru. –

+0

Masz rację, umieszczenie atrybutu override dla każdego znacznika koloru działa zgodnie z oczekiwaniami. W każdym razie, czy istnieje sposób na zastosowanie atrybutu override dla wszystkich tagów kolorów bez ręcznego ustawiania dla każdego tagu? – Paul

Odpowiedz

7

Przenieś tools:override do znacznika color.

Nie ma w tym nic złego. Android Studio ostrzega cię, jeśli nie jest to celowe.

Jeśli naciśniesz alt-enter na linii z ostrzeżeniem, AS zaproponuje wstawienie dla ciebie atrybutu override i umieści go we właściwym miejscu.

+0

Działa zgodnie z oczekiwaniami. Dzięki. Jednak alt-enter nie proponuje wstawiania atrybutu override. – Paul

+0

Spróbuj najechać kursorem na podświetlenie błędu, powinien podać skrót. – alex