0

我正在使用带有几个自定义视图的相对布局。每个自定义视图都是一个彩色正方形,绘制在自己的画布上。我想为每个自定义视图添加一个 clicklistener。现在,当将所有视图(带有 clicklistener)添加到布局时,即使在正方形旁边单击,也只有最后添加的自定义视图是可点击的。也许问题在于这个视图的画布与其他画布重叠。我可以通过将每个视图的背景设置为黑色来看到这一点。--> 只有最后一个视图在黑色背景下可见。我怎样才能避免这个问题(不使用 ontouch 和坐标请求)我怎样才能删除我不使用的透明画布。

编辑:

public class StorageView extends View {

Paint paintedStorage = new Paint(); 
int sizeX,sizeY,koordX,koordY;
Storage storage;

public StorageView(Context context, Storage storage, double ratio) {
    super(context);
    this.koordX = (int)(storage.getKoordX()*ratio);
    this.koordY = (int)(storage.getKoordY()*ratio);
    this.sizeX = (int)(storage.getSizeX()*ratio);
    this.sizeY = (int)(storage.getSizeY()*ratio);
    this.storage = storage;
}

public void onDraw(Canvas canvas){
    super.onDraw(canvas);

    if(storage.getArticleList().isEmpty())
        paintedStorage.setColor(Color.LTGRAY);
    else
        paintedStorage.setColor(Color.CYAN);

    paintedStorage.setStrokeWidth(3);

    canvas.drawRect(koordX, koordY, koordX+sizeX, koordY+sizeY, paintedStorage);

}

public Storage getStorage(){
    return storage;
}

这在我的活动中:(StorageView 是我的正方形或矩形)

            for (int i = 0; i < storageList.size(); i++) {
            storageListView.add(new StorageView(context, storageList.get(i), ratio));
            //  storageListView.get(i).setBackgroundColor(Color.BLACK);
                storageListView.get(i).setClickable(true);

                    storageListView.get(i).setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {/*Do something (Toast)*/}});
                relativeKoordLayout.addView(storageListView.get(i));
            }

编辑:我明白了“设置视图的绝对位置”效果很好!

4

0 回答 0