从id获取drawable会返回null或空图像,具体取决于方法

时间:2013-10-03 15:59:33

标签: java android android-drawable

注意我在问题描述中引用了一些注释但是注释不在代码容器中,您必须向右滚动才能看到注释。

所以,我试图从R.drawable中获得一个可绘制的(图像)但是已经碰到了一些问题。我从尝试1(检查代码注释)开始,得到一个所有边界= 0的图像。但后来我读了here,getDrawable()可能会返回错误的图像缩放,所以我按照通知尝试了2(再次检查代码注释),但在这种情况下,drawable为null。

以下是代码:

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是有效的,但仍无法正常工作。

1 个答案:

答案 0 :(得分:0)

来自TextView文档的

  

public void setCompoundDrawables(Drawable left,Drawable top,   可绘制的右侧,可绘制的底部)

     

将Drawables(如果有)设置为显示在左侧   在文本的上方,右侧和下方。如果不这样做,请使用null   想要一个Drawable那里。 Drawables必须已经有了   setBounds(Rect)调用。

因此,一旦拉动了drawable,就必须在其上调用setBounds来指定希望图像显示的边界