我正在使用具有几个自定义视图的相对布局。 每个自定义视图都是一个在自己的画布上绘制的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” 工作得很好!