Android自定义视图组件只能在构造函数中初始化吗?

时间:2012-09-01 20:43:58

标签: android android-layout android-view

我是Android开发的新手。我一直在玩自定义视图,我有一些可点击的图像。

当我从视图构造函数

运行这些代码时
ImageView image_view = new ImageView(getContext());
Drawable image = getResources().getDrawable(image_id);
image_view.setImageDrawable(image);
image_view.setClickable(true);
image_view.setOnClickListener(MyView.this);
addView(image_view); 

我可以看到图像,我可以按下它们来触发OnClick处理程序。

但是,如果我在视图构造和膨胀后运行相同的代码。我得到其中一个场景

1)我可以看到图像但无法触发click事件(主线程在遇到运行时异常后报告为暂停)

2)应用程序似乎运行但我只得到一个黑屏。

3)应用程序似乎运行,在绘制它挂起的背景颜色后面包(在构造函数中设置背景颜色)

为什么在构建后添加图像视图是错误的?我描述的三种情景的根本原因是什么?

编辑这是我如何获得其他(失败)方案的示例:

protected boolean HandelMessge(Message msg) {
UICommands cmsg = UICommands.get(msg.what);
boolean bRetval = false;
switch (cmsg) {
case AddViews:
ImageView image_view = new ImageView(getContext());
    Drawable image = getResources().getDrawable(image_id);
    image_view.setImageDrawable(image);
    image_view.setClickable(true);
    image_view.setOnClickListener(MyView.this);
    addView(image_view); 
msg.recycle();
bRetval = true;
break;
   }
  return bRetval;
 }

0 个答案:

没有答案