Получение возможности рисования из id возвращает нулевое или пустое изображение в зависимости от метода

Примечание Я ссылаюсь на некоторые комментарии в описании своей проблемы, но они находятся за пределами контейнера кода, вам нужно прокрутить вправо, чтобы увидеть комментарии.

Итак, я пытаюсь получить рисунок (изображение) из R.drawable, но столкнулся с некоторыми проблемами. Я начал с попытки 1 (проверьте комментарий к коду) и получил изображение со всеми границами = 0. Но затем я прочитал здесь, что getDrawable () может вернуть ложное масштабирование изображения, поэтому я последовал уведомлению и попытался выполнить попытку 2 (снова проверьте комментарий к коду), но в этом случае объект рисования был нулевым.

Вот код:

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);
}

Как вы можете видеть в закомментированной строке mImage = «flower», я пробовал со 100% уверенностью, что mImage был действительным, но все равно не работал.


person SiXoS    schedule 03.10.2013    source источник
comment
какой у тебя файл изображения? foxhead, например, какое у него расширение? jpg ? png ? и в какой папке он? рисовать-hdpi ? нодпи ? ...   -  person Tourki    schedule 03.10.2013
comment
это разные расширения файлов на разных изображениях (вероятно, не оптимальные), jpg и png, я пробовал все, они напрямую помещаются в drawable-xhdpi, хотя нет никакой разницы при помещении их в drawable. Изображения работают, когда на них есть ссылки в xml   -  person SiXoS    schedule 03.10.2013
comment
так что у вас есть foxhead.jpg в вашей папке drawable-xhdpi/   -  person Tourki    schedule 03.10.2013
comment
нет, foxhead.png :P и, как я уже сказал, они работают в xml, используя @drawable/foxhead. Я также использую eclipse, который начинает ворчать, если идентификатор недействителен или не существует.   -  person SiXoS    schedule 03.10.2013
comment
я думаю, у вас нет проблем, посмотрите на это: stackoverflow.com/questions/10302163/   -  person Tourki    schedule 03.10.2013
comment
хорошо, это объясняет границы, но все же не объясняет, почему я не вижу изображения   -  person SiXoS    schedule 03.10.2013


Ответы (1)


из документа TextView:

public void setCompoundDrawables (рисуемый слева, рисуемый сверху, рисуемый справа, рисуемый снизу)

Устанавливает Drawables (если есть) так, чтобы они отображались слева, сверху, справа и под текстом. Используйте null, если вы не хотите, чтобы Drawable был там. У Drawables уже должен быть вызван setBounds(Rect).

Поэтому, как только вы вытащили свой рисунок, вам нужно вызвать setBounds для него, чтобы указать границы, в которых вы хотите, чтобы ваше изображение отображалось.

person Tourki    schedule 03.10.2013