Android:重复与视图内联的溢出菜单

Android: repeat an overflow menu inline with views

我有一个任务列表,我想在界面 的每个列表项下方重复菜单 内联 而不是弹出菜单或上下文菜单。我寻找菜单而不是 LinearLayout 的原因是为了轻松使用 "showAsAction" 和 "ifRoom"。你有什么建议吗?

我尝试了什么:我创建了一个 layout/myspecialmenu.xml 并且我使用 addView 将其作为视图包含在每个项目之后!显然没有成功!

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.javacodegeeks.android.menu.MainActivity"
    android:id="@+id/mycontextmenu" >

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
       android:showAsAction="ifRoom"
       />
</menu> 

这就是我尝试以编程方式在每个项目之后加载它的方式:

LinearLayout mymenu=(LinearLayout) findViewById(R.id.myspecialmenu);
contents.addView(mymenu);

对于这种情况,只需忘记菜单实现即可。

转到设计器并要求 3dots 图标,将其保存在 Button 或 ImageView 中。单击该按钮后,您可以使用 ListPopupWindow 来显示您列出选项的视图。设置并适配 ListPopupWindow 以创建您的选项。

如果您有固定的选项(假设有 3 个选项)显示在线性布局上,而所有其他选项都显示在溢出菜单中,您可以轻松地做到这一点,或者根据菜单项计算宽度并移动剩余部分项添加到溢出图标。

希望对您有所帮助。

干杯。

您试图使用 menus 实现的目标完全无关紧要。创建 Activity 时会创建菜单。如何重新创建菜单?

我建议你做如下设计:

1) 使 list_row_item.xml 具有 LinearLayout 水平。

2) 在水平布局中插入四个项目;前 3 个是您的 TextViews,最后一个可能是 ImageButton,并为其提供三点菜单的图像。

3) 相应地在这些视图中分配 weight,以便 ImageButton 在屏幕上消耗最少 space。

4) 然后你可以在 ImageButton 上简单地设置一个 OnClickListener。

5) 然后你又会想要 Layout 喜欢菜单,为此你需要创建一个 Fragment 当用户点击 ImageButton 时会显示.