Aby ustawić tło:
RelativeLayout layout =(RelativeLayout)findViewById(R.id.background);
layout.setBackgroundResource(R.drawable.ready);
Czy to najlepszy sposób, aby to zrobić?
java
android
background
drawable
Chad Bingham
źródło
źródło
remoteViews.setInt(R.id.btn_start,"setBackgroundResource", R.drawable.ic_button_start);
Odpowiedzi:
layout.setBackgroundResource(R.drawable.ready);
jest poprawne.Innym sposobem na osiągnięcie tego jest użycie:
Ale myślę, że problem występuje, ponieważ próbujesz załadować duże obrazy.
Oto dobry samouczek, jak ładować duże mapy bitowe.
AKTUALIZACJA:
getDrawable (int) przestarzałe na poziomie API 22
getDrawable(int )
jest teraz przestarzałe na poziomie API 22. Zamiast tego należy użyć następującego kodu z biblioteki wsparcia:Jeśli odwołujesz się do kodu źródłowego ContextCompat.getDrawable , daje ci to coś takiego:
Więcej informacji na temat ContextCompat
Począwszy od API 22, powinieneś użyć
getDrawable(int, Theme)
metody zamiast getDrawable (int).AKTUALIZACJA:
Jeśli korzystasz z biblioteki obsługi v4, dla wszystkich wersji wystarczą następujące informacje.
Musisz dodać następujące elementy w aplikacji build.gradle
Lub za pomocą ResourceCompat w dowolnym interfejsie API, takim jak poniżej:
źródło
if(buttonBackground.equals(R.drawable.myDrawable))
skądDrawable buttonBackground = myButton.getBackground();
wziąć ten błąd: snag.gy/weYgA.jpgmyActivity.getTheme()
najnowszej wersji metody, zamiast parametru null:myView.setBackground( getResources().getDrawable(R.drawable.my_background, activity.getTheme()));
AppCompatResources.getDrawable(this.getContext(), resId)
zamiast tego, Google już zaimplementował to wAppCompat*
widżecie / widoku, np .:android.support.v7.widget.AppCompatCheckBox
Spróbuj tego:
i dla API 16 <:
źródło
getResources().getDrawable()
. Prawidłowy kod jestlayout.setBackgroundResource(R.drawable.ready);
taki sam, jak użyty OP. Problem pochodzi z rozmiaru mapy bitowej.teraz wewnątrz dowolnej funkcji, takiej jak onCreate, onResume
źródło
Możesz także ustawić tło dowolnego obrazu:
źródło
(.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
wewnętrzny kodKorzystam z minSdkVersion 16 i targetSdkVersion 23.
Poniższe działa dla mnie, używa
Zamiast używać:
Raczej użyj:
getActivity()
jest używany we fragmencie, jeśli wywołuje się z użycia działaniathis
.źródło
Jeśli twoje tła znajdują się teraz w folderze do rysowania, spróbuj przenieść obrazy z folderu Drawable do folderu Drawable-Nodpi w swoim projekcie. To działało dla mnie, wydaje się, że w innym przypadku obrazy są przeskalowywane przez nich samych ..
źródło
Użyj Butterknife, aby powiązać zasób do rysowania ze zmienną, dodając go na szczyt klasy (przed dowolnymi metodami).
następnie dodaj jedną z metod
To wszystko czego potrzebujesz
źródło
źródło
Spróbuj
ViewCompat.setBackground(yourView, drawableBackground)
źródło
Wypróbuj ten kod:
źródło
Spróbuj tego.
źródło
źródło
Wewnątrz aplikacji / res / your_xml_layout_file .xml
źródło