0

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

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

这是代码:

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

4

1 回答 1

0

来自 TextView 文档:

public void setCompoundDrawables(左侧可绘制,顶部可绘制,右侧可绘制,底部可绘制)

将可绘制对象(如果有)设置为显示在文本的左侧、上方、右侧和下方。如果您不想要 Drawable ,请使用 null 。Drawables 必须已经调用了 setBounds(Rect)。

所以一旦你拉出你的drawable,你必须在它上面调用setBounds来指定你希望你的图像出现的边界

于 2013-10-03T16:58:27.723 回答