Chcę ustawić tło do rysowania widoku. Są na to dwie metody (o ile mi wiadomo): setBackground
i setBackgroundDrawable
.
Kiedy używam setBackground
, mówi, że został dodany na poziomie API 16, ale wersja minimalna SDK mojego projektu to 7. Zakładam, że nie będzie działał na niczym poniżej 16, prawda? Ale kiedy używam setBackgroundDrawable, mówi, że jest przestarzałe.
Z czego mam korzystać?
android
view
background
drawable
Pijusn
źródło
źródło
Odpowiedzi:
Jest przestarzały, ale nadal działa, więc możesz go po prostu użyć. Ale jeśli chcesz być całkowicie poprawny, tylko dla kompletności tego ... Zrobiłbyś coś takiego:
Aby to zadziałało, musisz ustawić buildTarget API 16 i min build na 7 lub coś podobnego.
źródło
android:minSdkVersion="7" android:targetSdkVersion="17"
, jednak setBackground () wychodzi za błąd: Połączenie wymaga poziom API 16 (prąd min wynosi 7)@TargetApi(Build.VERSION_CODES.JELLY_BEAN) @SuppressWarnings("deprecation") private static void setBg(RelativeLayout layout, BitmapDrawable TileMe) { if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) { layout.setBackgroundDrawable(TileMe); } else { layout.setBackground(TileMe); } }
Możesz użyć
setBackgroundResource()
zamiast tego, który jest na poziomie API 1.źródło
setBackgroundResource(int)
akceptuje identyfikator zasobu, dlatego za każdym razem musi nadmuchać widok, aby ustawić tło. Nie chcę takiego zachowania, zakładając, że już nadmuchałem Drawable. Czy coś brakuje?wydaje się, że obecnie nie ma różnicy między 2 funkcjami, jak pokazano w kodzie źródłowym (przypis do tego postu ):
więc jest to tylko decyzja dotycząca nazewnictwa, podobna do tej z opcją fill-parent vs match-parent.
źródło
wiem, że to stare pytanie, ale mam podobną sytuację i moje rozwiązanie było
a następnie możesz grać z „Drawable”, stosując filtry kolorów itp
źródło
Posługiwać się
ViewCompat.setBackground(view, background);
źródło
możesz
setBackgroundResource()
zamiast tego użyć tjrelativeLayout.setBackgroundResource(R.drawable.back);
to działa dla mnie.
źródło
Teraz możesz użyć jednej z tych opcji. I tak to zadziała. Twój kolor może być kodem HEX , takim jak ten:
Zasób kolor , podobnie jak to:
Lub niestandardowy zasób xml , taki jak:
Mam nadzieję, że to pomoże!
źródło
Korzystając z Androida studio 1.5.1, otrzymałem następujące ostrzeżenia:
oraz skargi na wycofanie się
Korzystając z tego formatu, pozbyłem się obu:
źródło
To działa dla mnie: Zobacz widok to Twój editText, spinner ... itd. I int drawable to przykład twojej trasy do rysowania (R.drawable.yourDrawable)
źródło
Użyj setBackgroundResource (R.drawable.xml / png)
źródło
Miałem również ten problem, ale dokonałem obejścia za pomocą ImageView .
Spróbuj użyć RelativeLayout i dodaj w nim ImageView (szerokość i wysokość: fill_parent, scaleType: center).
Upewnij się także, że widok obrazu jest pierwszym elementem wewnątrz RelativeLayout, aby działał jako tło.
źródło
if
klauzula. Zobacz poprawną odpowiedź.Możesz także to zrobić:
EDYCJA: Tak jak wskazał @BlazejCzapp , lepiej unikać refleksji, jeśli potrafisz rozwiązać problem bez niego. Miałem przypadek użycia, w którym nie byłem w stanie rozwiązać bez refleksji, ale to nie jest przypadek powyżej. Więcej informacji można znaleźć na stronie http://docs.oracle.com/javase/tutorial/reflect/index.html
źródło