我以编程方式创建了一组 ImageButton 视图(具有透明背景)作为我的应用程序中定义的静态地图 (ImageView) 上的地图引脚。在地图上的某些位置,有一些彼此非常接近的 ImageButton。我注意到在这种情况下,即使我单击按钮 1,应用程序也会认为按钮 2 被单击,因此继续运行与按钮 2 关联的活动。关闭这些按钮的透明度表明按钮实际上是比相关的源图像大得多,因此其中一些按钮已经重叠。
如何定义图像按钮,使它们的大小与源图像的大小相同?
以下是 onCreate() 下相关代码的快照:
ImageButton btnMapLoc = new ImageButton(ResultMapActivity.this);
RelativeLayout.LayoutParams vp = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
vp.setMargins(x,y,0,0); // [left, top, right, bottom] - in pixels
btnMapLoc.setLayoutParams(vp);
//btnMapLoc.setBackgroundColor(Color.TRANSPARENT);
btnMapLoc.requestLayout();
String imgNameNormal = "map_loc_" + mapLocation + "_normal"; //e.g. map_loc_10_normal
int idNormal = getResources().getIdentifier(imgNameNormal,"drawable",getPackageName());
String imgNameClick = "map_loc_" + mapLocation + "_click"; //e.g. map_loc_10_click
int idClick = getResources().getIdentifier(imgNameClick,"drawable",getPackageName());
btnMapLoc.setImageResource(idNormal);
rl.addView(btnMapLoc, vp);
// Change image as the state of the button changed (normal vs. clicked)
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {-android.R.attr.state_pressed},getResources().getDrawable(idNormal)); // Note the "-"
states.addState(new int[] {android.R.attr.state_pressed},getResources().getDrawable(idClick));
btnMapLoc.setImageDrawable(states);
谢谢。