2013-12-18 8 views
6

Chcę umieścić obraz jako tło Układ.Android: ustaw tło układu za pomocą ścieżki obrazu

Najpierw tworzę rozciągliwej: Drawable d = Drawable.createFromPath("pathToImageFile");

W poziomie API 8layout.setBackground(d) jest nieobsługiwane I layout.setBackgroundDrawable(d)jest przestarzała więc muszę korzystać

layout.setBackgroundResource(resourceID)

jak można Otrzymuję resourceID z dynamicznie generowanego drawable. Używam tej metody:

do tworzenia losowania.

Odpowiedz

2

Hi użyć następującej metody

public void setBackgroundDrawable (Drawable background) 

wywołując

imageView.setBackgroundDrawable(drawable); 

Dodane w poziomie API 1

EDIT: spróbować tej metody

@SuppressWarnings("deprecation") 
    private void setRes(ImageView iv,Drawable drawable){ 
     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) 
      iv.setBackground(drawable); 
     else 
      iv.setBackgroundDrawable(drawable); 
    } 
+0

Ta metoda jest nieaktualna Czy mogę jej użyć? W czasie zaćmienia wyświetla się po uderzeniu w kod. – ZZeyaNN

+0

ta metoda jest zdeplikowana na poziomie 16 interfejsu API do poziomu interfejsu API na poziomie 15 to zadziała –

+0

Jednak w przypadku wyższych wersji moja aplikacja nie będzie działać. – ZZeyaNN

0

Dla API 1-15 użytkowania

view.setBackgroundDrawable(drawable); 

Dla API 16 & powyżej użytku

viw.setBackground(drawable); 
0

Jak wyjaśniono w POST przez @hasanghaforian,

można uzyskać identyfikator zasobów przy użyciu "getIdentifier "z następującym kodem:

int resID = getResources().getIdentifier("org.anddev.android.testproject:drawable/bug", null, null); 

LUB

int resID = getResources().getIdentifier("bug", "drawable", "org.anddev.android.testproject");  

gdzie

bug.png jest plik w "/res/drawable/".

Następnie można użyć layout.setBackgroundResource(resID).

+0

ponieważ dynamicznie tworzymy ** drawable ** nie znamy jego nazwy, która w tym przypadku jest "bug". – ZZeyaNN