ViewGroup中的ImageButtons

时间:2010-01-14 16:30:55

标签: android views button

我的应用的基础视图在画布上绘制了位图,线条等。我想在此之上显示图像(图标),这将响应Touch事件。这些图像的数量和位置将根据SQLite数据库中的数据而变化。

我认为实现这一点的方法是正确的,我要先将一个ViewGroup添加到基本视图中,然后为每个图标添加一个具有OnTouch侦听器的ImageButton对象,并通过在RelativeLayout.LayoutParams中设置边距来定义定位对象

我的每个按钮的代码如下: `

public class MyButton {

ImageButton mButton;
private Bitmap Star;

public MyButton(int intX, int intY) {
    mButton = new ImageButton(Global.thisApp);     
    mButton.setImageBitmap(BitmapFactory.decodeResource(Global.thisApp.getResources(), R.drawable.star)r);
    mButton.setPadding(0, 0, 0, 0);
    mButton.setOnTouchListener(new ImageButton.OnTouchListener() {
        @Override
        public boolean onTouch(View arg0, MotionEvent arg1) {
            // ToDo
            return false;
        }
    });
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams 
        (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.setMargins(intX, intY, 0, 0);
    Global.thisApp.mLayout.addView(mButton, params); 
}

}

` 创建按钮的代码如下:

      poiCount = 0;
    mCursor=Global.mDBAdapter.fetchItems(...);
    if (mCursor.getCount()>=0) {
        poi = new MyButton[mCursor.getCount()];
        mCursor.moveToFirst();
        do {
            int X = ... ;
            int Y = ... ;
            poi[poiCount] = new MyButton("Type", X, Y);
            poiCount++;
        } while (mCursor.moveToNext());
    }

从底层视图的onDraw()方法调用此代码。

这似乎在最初绘制屏幕时起作用,并且随后重新绘制屏幕(使用新数据)时会添加新按钮;但是,之前的按钮不会被删除。

我尝试使用每个依次按钮作为参数调用Global.ThisApp.MyLayout.removeView,但Eclipse对象表示MyButton对象不能作为removeView的参数。

每次基础视图无效时,如何删除现有按钮?

1 个答案:

答案 0 :(得分:0)

MyButton应扩展View(在您的情况下为ImageButton)以添加到ViewGroup或从ViewGroup中删除。