我用WindowManager创建了一个窗口,在里面放了一个自定义的ListView,但是这个ListView不能响应OnItemClick和OnItemLongClick事件,请问是怎么回事?已经快被这个问题逼疯了。
另外,如果我在WindowManager中只放一个TextView的话,这个TextView是能响应点击事件的。
我的代码如下:private WindowManager.LayoutParams wmParams;
private WindowManager wm;
private ListView informationBar;public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 初始化信息条
initInfoBar();
initWindowManager();
wm.addView(informationBar, wmParams); // 创建View
}//onCreateprivate void initWindowManager() {
wm = (WindowManager) getApplicationContext().getSystemService("window");
wmParams = new WindowManager.LayoutParams();
wmParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;// 即2003
wmParams.format = 1;
wmParams.width = ViewGroup.LayoutParams.FILL_PARENT;
wmParams.height = 50;
// 在屏幕中的位置
wmParams.gravity = Gravity.BOTTOM;
wmParams.y = 0;// offset to bottom
}
private void initInfoBar() {
informationBar = new ListView(this);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
String[] viewNames = { "infobar_text_content",
"infobar_text_logo" };
map.put(viewNames[0], "为什么不能点击");
map.put(viewNames[1], R.drawable.logo);
list.add(map);
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put(viewNames[0], "为什么不能点击2");
map2.put(viewNames[1], R.drawable.logo);
list.add(map2);
SimpleAdapter sadapter = new SimpleAdapter(this, list,
R.layout.infobar_text, viewNames, new int[] {
R.id.infobar_text_content,
R.id.infobar_text_logo });
informationBar.setAdapter(sadapter); informationBar.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.i("MAINACTIVITY", "item click");
Toast.makeText(MainActivity.this, "item click",
Toast.LENGTH_LONG).show();
}
});
});
}
另外,如果我在WindowManager中只放一个TextView的话,这个TextView是能响应点击事件的。
我的代码如下:private WindowManager.LayoutParams wmParams;
private WindowManager wm;
private ListView informationBar;public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 初始化信息条
initInfoBar();
initWindowManager();
wm.addView(informationBar, wmParams); // 创建View
}//onCreateprivate void initWindowManager() {
wm = (WindowManager) getApplicationContext().getSystemService("window");
wmParams = new WindowManager.LayoutParams();
wmParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;// 即2003
wmParams.format = 1;
wmParams.width = ViewGroup.LayoutParams.FILL_PARENT;
wmParams.height = 50;
// 在屏幕中的位置
wmParams.gravity = Gravity.BOTTOM;
wmParams.y = 0;// offset to bottom
}
private void initInfoBar() {
informationBar = new ListView(this);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
String[] viewNames = { "infobar_text_content",
"infobar_text_logo" };
map.put(viewNames[0], "为什么不能点击");
map.put(viewNames[1], R.drawable.logo);
list.add(map);
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put(viewNames[0], "为什么不能点击2");
map2.put(viewNames[1], R.drawable.logo);
list.add(map2);
SimpleAdapter sadapter = new SimpleAdapter(this, list,
R.layout.infobar_text, viewNames, new int[] {
R.id.infobar_text_content,
R.id.infobar_text_logo });
informationBar.setAdapter(sadapter); informationBar.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.i("MAINACTIVITY", "item click");
Toast.makeText(MainActivity.this, "item click",
Toast.LENGTH_LONG).show();
}
});
});
}
解决方案 »
- 求助前辈android开发最常用的java技术
- 如何在一个project里面创建多个Activity?
- 有用过foxit sdk的同学吗?
- 未安装APK ,动态部署,加载资源布局XML的问题
- android平台的串口通信丢字符
- gps定位得不到经纬度 求大虾帮忙看看
- SlidingMenu滑动事件和点击事件冲突问题
- jQuery Mobile 手机网页开发的 两个问题
- listview嵌套gridview 点击listView 里面的Gridview的item 让点击的Gridview的item变色,只让点击的变色
- vs2015如何打包apk
- ListView增加按钮事件 获取焦点行
- android apk下如何模拟发送home键
private WindowManager.LayoutParams wmParams;
wmParams的flags属性有很多值,就是这个flags在作祟
在有touch事件的时候要将flags设置为FLAG_ALT_FOCUSABLE_IM,touch事件ACTION_UP之后,又要将其设置为FLAG_NOT_FOCUSABLE;
ListView在页面中也还还是存在、还会有这样问题吗?