相对布局中的自定义视图重叠其他自定义视图

时间:2013-09-30 08:53:55

标签: android android-layout android-canvas android-view android-relativelayout

我正在使用具有几个自定义视图的相对布局。 每个自定义视图都是一个在自己的画布上绘制的collored square。我想为每个自定义视图添加一个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));
            }

编辑:我得到了它“Set the absolute position of a view” 工作得很好!

0 个答案:

没有答案