ric*_*ick 33 android android-actionbar-compat
我在我的应用程序中使用appcompat.我希望菜单项显示在操作栏上或至少溢出(3个点)以在没有空间时显示它们.操作栏上有很多空间,但它们仍然没有显示出来.菜单流从底部升起,仅在按下菜单按钮时也是如此.
menu_activity.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/menu_lang"
android:showAsAction="always"
android:title="@string/menu_lang"
android:icon="@android:drawable/ic_input_lang"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
活动:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_activity, menu);
return true;
}
Run Code Online (Sandbox Code Playgroud)
这篇文章说,当硬件菜单按钮存在时,它不起作用.但其他应用程序可以在同一设备上显示项目.所以,这个答案似乎是不正确的.有人可以帮忙吗?

Pat*_*ick 70
您似乎使用了错误的菜单:您的文件名为"menu_activity.xml",并使用Resource-Id为菜单充气: R.menu.reminder_menu
菜单的资源名称应与文件名相同,即: R.menu.manu_activity
再试一次 - 我也碰到了这一次它让我疯了......
更新 在澄清上述部分是为了混淆之后,请确保:
showAsAction属性,以便兼容性库可以拾取它们.您已经定义了自定义命名空间(菜单标记中的"app").您需要根据Android指南更改android:showAsAction标记app:showAsAction.
您更正后的menu_activity.xml将如下所示:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/menu_lang"
app:showAsAction="always"
android:title="@string/menu_lang"
android:icon="@android:drawable/ic_input_lang"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
动作栏的扩展Android指南涵盖了这些新的和讨厌的陷阱......
小智 5
好的,我想我找到了适合你的解决方案.它被称为溢出菜单,您需要在onCreate方法中调用以下方法.
private void getOverflowMenu() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if(menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
试试这个,让我知道它是否适合你.
编辑:
我想我终于理解了你的问题.我可以给你一个想法.如果您不想使用溢出菜单并只显示您发布的屏幕截图中显示的菜单项,则可以在活动的基础上创建布局.
您可以采用线性布局,给出与操作栏看起来相同的背景,并放置您想要放置的任何图标,并使用onClickListener为它们提供功能.希望这会给你一些想法.这样您就可以创建自己的自定义菜单.尝试下面的布局,并用菜单图标替换ic_launcher drawable.然后只需将onClickListeners设置为它们,并在onClick方法中执行您想要执行的任何功能.
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#66000000" >
<ImageView
android:id="@+id/xMenuBtn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:background="@drawable/ic_launcher" />
<TextView
android:id="@+id/xMenuTxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Chats"
android:textSize="18sp"
android:layout_toRightOf="@+id/xMenuBtn1"
android:layout_centerVertical="true" />
<ImageView
android:id="@+id/xMenuBtn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/xMenuBtn3"
android:background="@drawable/ic_launcher" />
<ImageView
android:id="@+id/xMenuBtn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:background="@drawable/ic_launcher" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62510 次 |
| 最近记录: |