2011-08-11 50 views
1

我有一个ImageView作为ViewGroup的孩子,它是GridView的一部分。 ImageView的绘图并未出现,但是我可以看到背景颜色,并且如果我使用setBackgroundDrawable中的绘图,则会显示它。我尝试过更改每个属性并调用invalidate(),但没有一个让drawable出现。ImageView图像没有出现在ViewGroup

Log.i打印

[email protected] 

setImageResource(int)也不起作用。

我正在使用蜂窝。

public MyViewGroup(Context context) { 
    super(context); 

    myImageView = new ImageView(context); 
    myImageView.setBackgroundColor(Color.RED); 
    myImageView.setScaleType(ImageView.ScaleType.CENTER); 
    Drawable drawable = this.getResources().getDrawable(R.drawable.myimage); 
    myImageView.setImageDrawable(drawable); 
    Log.i("",drawable+""); 
    //myImageView.setImageResource(R.drawable.myimage); 
    addView(myImageView); 
} 

予省略onLayout代码,其中我请setLeft()setTop()setRight()setBottom()

任何帮助,非常感谢。谢谢。

更新: 也不适用于android.R.drawable图像。我很难过。

回答

0

尝试设置将图像作为位图获取,然后将其设置为可绘制。

Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.myimage) 
Drawable drawable = new BitmapDrawable(bmp);" 
myImageView.setImageDrawable(drawable); 

只是出于好奇:为什么你在你的构造函数中做所有这些?

+0

设置从位图绘制的图像不起作用,也不直接将图像设置为位图。这很奇怪,因为如果我在main.xml GUI编辑器中将ImageView添加到LinearLayout,图像显示正常。 – Dave

+0

我在构造函数中这样做,只是为了确保它在我布置布局时能够正常工作。它将在最终实现中的构造函数中不可见,并且在代码中的其他位置设置属性时设置图像。 – Dave

1

也许问题是,你没有设置布局参数。尝试:

LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, WRAP_CONTENT); 
myImageView .setLayoutParams(params); 
+0

我曾试过,也有固定值。我看到ImageView所在的位置,因为我可以看到backgroundColor,而不是图像本身。 – Dave

0

如果父布局具有FILL_PARENT的宽度/高度,将其更改为WRAP_CONTENT可能做的伎俩。

我在使用带有可绘制布局的ImageView的Honeycomb中遇到了这个问题 - 图像从那里出现的对话框的宽度来判断,但是我看不到图像本身。 ImageView的父母是一个带有fill_parent的LinearLayout。切换到wrap_content固定它。

+1

这似乎没有帮助,但可能是问题。我有一个想法,它可能是绘制在ImageView的边界之外的某个地方。当我设置背景颜色时,它恰好显示在我想要的位置,只是无法绘制。 解决方法是使用setBackgroundDrawable而不是setImageDrawable或Resource。但它总是延伸填充,并且你失去了scaleType。因为我想加载不同大小的drawable,我可以调整它们或ImageView的大小或处理拉伸。 – Dave