Android:上下文菜单没有显示ListView与LinearLayout定义的成员?
我有一个ListActivity和ListView,我已经绑定了一些数据。 数据显示正常,我还为视图注册了上下文菜单。 当我将列表项显示为一个简单的TextView时,它工作正常:
但是,当我尝试更复杂的东西时,比如显示名称和CheckBox,菜单永远不会出现:
长按可以处理更复杂的元素吗? 我正在建立2.1。
(编辑)
在ListActivity上注册:
registerForContextMenu(getListView());
我发布的代码是列表的项目模板。
您的CheckBox
可能会干扰问题。 考虑使用CheckedTextView
而不是LinearLayout
, CheckBox
和TextView
组合,因为CheckedTextView
是Android期望的CHOICE_MODE_MULTIPLE
列表。
查看$ANDROID_HOME/platforms/$VERSION/data/res/layout/simple_list_item_multiple_choice.xml
,其中$ANDROID_HOME
是安装SDK的地方, $VERSION
是某个Android版本(例如, android-2.1
)。 此资源是您应该用于CHOICE_MODE_MULTIPLE
列表的标准资源。 您可以随意将其复制到项目中,并根据需要调整CheckedTextView
的样式。
设置复选框属性focusable = false;
并再次运行项目..
在这个地方找到: http : //www.anddev.org/view-layout-resource-problems-f27/custom-list-view-row-item-and-context-menu-t52431.html
将复选框设置为不可聚焦可以解决问题。
不确定在使用除触摸屏以外的其他东西(使用滚轮或箭头键)导航UI时是否会导致问题,但它解决了我的问题(我的布局比TextView和Checkbox更复杂……)
上下文菜单只能注册到View的子类。 我不知道您是如何使用上下文菜单注册LinearLayout的,您是否将其打包在某种类型的View中? 如果是这样,你应该发布该代码。
无论如何为什么不只是注册每个列表项的TextView? 谁会长按复选框…
这应该来自常规的ListView。 但是如果你从头开始新的列表,我会考虑使用CheckedTextView:
checkBox.setOnLongClickListener(new View.OnLongClickListener() { public boolean onLongClick(View v) { // return false to let list's context menu show return false; } });
- Android中的文件权限
- OnFragmentInteractionListener
- 在对话框中启用GPS后,Android位置返回null
- 在测试谷歌应用程序时退款测试购买
- 当Decrypting Image时,给出了javax.crypto.BadPaddingException:pad块损坏的Android
- 应用程序崩溃后Android蓝牙连接不会关闭
- 在Java中将字符串日期格式化为不同的格式
- java.lang.IllegalArgumentException:at android.view.Surface.unlockCanvasAndPost(Native Method)
- dispatchPopulateAccessibilityEvent未触发