代码之家  ›  专栏  ›  技术社区  ›  RandomEngy

android:context menu不显示linearlayout定义的成员的listview?

  •  3
  • RandomEngy  · 技术社区  · 14 年前

    我有一个listactivity和listView,并将一些数据绑定到它。数据显示得很好,我还为视图注册了一个上下文菜单。当我将列表项显示为简单的文本视图时,它工作正常:

    <TextView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/nametext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    

    但是,当我尝试一些更复杂的东西时,比如显示名称和复选框,菜单就永远不会显示:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView android:id="@+id/nametext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <CheckBox
            android:id="@+id/namecheckbox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
    </LinearLayout>
    

    长时间的冲压能在更复杂的元素上工作吗?我在2点1分开始建造。

    (编辑)

    在ListActivity上使用此注册:

    registerForContextMenu(getListView());
    

    我发布的代码是列表的项目模板。

    5 回复  |  直到 12 年前
        1
  •  7
  •   Mauricio CommonsWare    12 年前

    你的 CheckBox 可能干扰了事情。考虑使用 CheckedTextView 而不是 LinearLayout , 复选框 TextView 组合,因为 检查文本视图 是安卓所期望的 CHOICE_MODE_MULTIPLE 名单。

    退房 $ANDROID_HOME/platforms/$VERSION/data/res/layout/simple_list_item_multiple_choice.xml 在哪里 $ANDROID_HOME 无论您在哪里安装了SDK和 $VERSION 是一些Android版本(例如, android-2.1 )此资源是您应该使用的标准资源 选择\模式\多个 列表。请随意复制到您的项目中,并调整 检查文本视图 根据需要。

        2
  •  3
  •   Crazy Coder    12 年前

    设置复选框属性 可聚焦=假;

    再次运行项目。

        3
  •  1
  •   Matthieu    13 年前

    在这里找到: http://www.anddev.org/view-layout-resource-problems-f27/custom-list-view-row-item-and-context-menu-t52431.html

    将复选框设置为不可聚焦可以解决问题。

    不确定它是否会在使用触摸屏以外的东西(使用滚轮或箭头键)导航用户界面时引起问题,但它修复了我的问题(我的布局比文本视图和复选框要复杂一些…)

        4
  •  0
  •   Nathan    14 年前

    上下文菜单只能注册到视图的子类。我不知道您是如何用上下文菜单注册LinearLayout的,您是在某种视图中打包它的吗?如果是这样,您应该发布该代码。

    无论如何,为什么不注册每个列表项的文本视图呢?谁会长按一个复选框…

        5
  •  0
  •   Toon Krijthe    12 年前

    这也应该来自常规的列表视图。但是,如果您从新列表的零开始,我会考虑使用checkedTextView:

            checkBox.setOnLongClickListener(new View.OnLongClickListener() {
    
                public boolean onLongClick(View v) {
                    // return false to let list's context menu show
                    return false;
                }
            });