Кнопки изображений в ViewGroup - PullRequest
2 голосов
/ 14 января 2010

Вид моего приложения содержит растровые изображения, линии и т. Д., Нарисованные на холсте.Я хочу отображать изображения (значки) поверх этого, которые будут реагировать на сенсорные события.Количество и расположение таких изображений будет изменяться в зависимости от данных в базе данных SQLite.

Правильно ли я считаю, что способ достижения этого состоит в том, чтобы создать группу ViewGroup, в которую я сначала добавляю базовое представление, а затемкаждый значок объекта ImageButton со слушателем OnTouch и позиционированием, определяемым путем установки полей в объекте 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 голосов
/ 15 января 2010

MyButton должно расширять View (ImageButton в вашем случае) для добавления или удаления из ViewGroup.

...