我正在以这种方式在我的界面上以编程方式创建一个 ImageView:
...
ImageView image = new ImageView(getActivity());
TableRow.LayoutParams params = new TableRow.LayoutParams(width, height);
image.setLayoutParams(params);
image.setPadding(5, 3, 5, 3);
image.setImageBitmap(myBitmap);
image.setTag(key);
image.setOnClickListener(this);
image.setOnTouchListener(this);
...
这是我的 onTouch 方法:
@Override
public boolean onTouch(View v, MotionEvent event) {
// Apply the pressed effect on a button
ImageView button = (ImageView) v;
if (event.getAction() == MotionEvent.ACTION_DOWN) {
button.setColorFilter(Color.argb(150, 155, 155, 155));
return false;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
button.setColorFilter(Color.argb(0, 155, 155, 155));
return false;
}
return false;
}
当然我实现了 OnTouchListener,我的目标是在 ImageView 被按下时添加一个效果。但我注意到一个奇怪的行为:
如果设备/模拟器有 Jelly Bean,则 ImageView 消失并且在我单击它后永远不会变得可见;
否则,如果设备/模拟器具有 Android 的预 Jelly Bean 版本(ICS、Gingerbread),则 ImageView 可以,并且不会从我的界面中消失。
Logcat 不报告错误,我不想/不需要改用 ImageButton。
我的问题是:我的代码是否遗漏了什么?为什么这会发生在两个不同版本的 Android 版本上(但到目前为止还没有)?
先感谢您。
编辑:我忘了说这段代码是片段的一部分。