【问题标题】:ImageView image not appearing in ViewGroupImageView 图像未出现在 ViewGroup 中
【发布时间】:2011-08-11 19:42:36
【问题描述】:

我有一个ImageView 作为ViewGroup 的子对象,它是GridView 的一部分。 ImageView 的drawable 没有出现,但是我可以看到背景颜色,如果我使用setBackgroundDrawable 中的drawable 代替,它会显示出来。我尝试更改每个属性并调用invalidate(),但没有一个使drawable 出现。

Log.i 打印出来

 android.graphics.drawable.BitmapDrawable@407bd4c0

setImageResource(int) 也不起作用。

我正在使用 Honeycomb。

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

我省略了我调用setLeft()setTop()setRight()setBottom()的onLayout代码。

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

更新: 也不适用于 android.R.drawable 图像。我被难住了。

【问题讨论】:

    标签: android imageview viewgroup


    【解决方案1】:

    也许问题在于您没有设置布局参数。试试:

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

    【讨论】:

    • 我试过了,也是固定值。我看到了我设置它的 ImageView,因为我可以看到背景颜色,而不是图像本身。
    【解决方案2】:

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

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

    只是出于好奇:为什么要在构造函数中执行所有这些操作?

    【讨论】:

    • 从位图设置可绘制图像不起作用,也不能直接将图像设置为位图。这很奇怪,因为如果我在 main.xml GUI 编辑器中将 ImageView 添加到 LinearLayout 中,图像看起来很好。
    • 我在构造函数中这样做只是为了确保它在我安排布局时工作。最终实现时在构造函数中是不可见的,而在代码中其他地方设置属性时设置的图像。
    【解决方案3】:

    如果父布局的宽度/高度为 fill_parent,将其更改为 wrap_content 可能会解决问题。

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

    【讨论】:

    • 这似乎没有帮助,但可能是问题所在。我有一个想法,它可能是在 ImageView 边界之外的某个地方绘制的。当我设置背景颜色时,它会准确地显示在我想要的位置,只是没有可绘制的。解决方法是使用 setBackgroundDrawable 而不是 setImageDrawable 或 Resource。但是它总是会拉伸以填充,并且您会丢失 scaleType。因为我想加载不同大小的不同drawable,我可以调整它们或ImageView的大小或处理拉伸。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 2014-12-20
    相关资源
    最近更新 更多