/ / Pobieranie rysowania z identyfikatora zwraca wartość pustą lub pustą w zależności od metody - Java, Android, Android rysowany

Pobranie rysowania z id zwraca null lub pusty obraz w zależności od metody - java, android, android-drawable

Uwaga Odnoszę się do niektórych komentarzy w opisie mojego problemu, ale komentarze znajdują się poza kontenerem kodu, musisz przewinąć w prawo, aby zobaczyć komentarze.

Więc próbuję uzyskać rysunkowy (obraz) z R.drawable, ale wpadłem na pewne problemy. Zacząłem od próby 1 (sprawdź komentarz kodu) i otrzymałem obraz ze wszystkimi granicami = 0. Ale potem przeczytałem tutaj że getDrawable () może zwrócić fałszywe skalowanie obrazu, więc podążyłem za powiadomieniem i spróbowałem 2 (ponownie sprawdź komentarz do kodu), ale w tym przypadku drawable był zerowy.

Oto kod:

private void setCurrentImage(){
TextView text = (TextView)profileView.findViewById(R.id.profile_image);
//mImage = "flower";
int id = R.drawable.flower;
if(mImage.equals("flower"))
id = R.drawable.flower;
if(mImage.equals("event_splash"))
id = R.drawable.event_splash;
if(mImage.equals("football"))
id = R.drawable.football;
if(mImage.equals("foxhead"))
id = R.drawable.foxhead;
if(mImage.equals("computer"))
id = R.drawable.computer;
//Drawable image = getResources().getDrawable(R.drawable.foxhead);          //attempt 1
TypedArray attr = getActivity().obtainStyledAttributes(new int[]{id});      //attempt 2
Drawable image = attr.getDrawable(0);                                       //attempt 2
Log.d("bounds", image.getBounds().toString());
text.setCompoundDrawables(image, null, null, null);
}

Jak widać na komentowanym wierszu mImage = "flower" Próbowałem ze 100% pewnością, że mImage był prawidłowy, nadal nie działał.

Odpowiedzi:

0 dla odpowiedzi № 1

z dokumentu TextView:

public void setCompoundDrawables (Drawable left, Drawable top, Wyciągany w prawo, wysuwany dół)

Ustawia Drawables (jeśli występują), aby pojawiały się wlewo powyżej, po prawej stronie i poniżej tekstu. Użyj null, jeśli nie chcę tam Drawable. Drawable musiał już mieć Wywołano setBounds (Rect).

Po wyciągnięciu rysowania należy wywołać setBounds, aby określić granice, w których ma się pojawiać obraz