我正在尝试为actvity
创建一个菜单。但它不能像我一样出现在actionbar
上。只是帮我错了。
这是我的菜单。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.sship.MainActivity"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/search"
android:icon="@drawable/ic_action_search"
android:title="@string/menu_item_search"
android:showAsAction="always"/>
<item
android:id="@+id/about"
android:orderInCategory="1"
android:title="@string/menu_item_about_app"/>
<item
android:id="@+id/help"
android:orderInCategory="2"
android:title="@string/menu_item_help"/>
这是我的活动
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch(item.getItemId()){
case R.id.search:
Toast.makeText(this, "Search button selected", Toast.LENGTH_SHORT).show();
break;
case R.id.about:
Toast.makeText(this, "About button selected", Toast.LENGTH_SHORT).show();
break;
case R.id.help:
Toast.makeText(this, "Help button selected", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}}
这是结果
答案 0 :(得分:0)
我的猜测是你正在使用styles.xml定义的默认工具栏,例如Theme.AppCompat.Light.DarkActionBar
。
我建议您使用文档here描述的支持操作栏。
提示:文档告诉您在应用清单中定义NoActionBar主题,但您也可以在styles.xml中设置它,以便您可以更好地控制使用此操作栏的位置。
答案 1 :(得分:0)
在Android 4.4之前,设备有一个硬件菜单按钮,因此使用硬件按钮激活动作溢出菜单,因此不会显示溢出图标。
您必须在4.4之前的设备中强行执行此操作以显示操作溢出按钮。在活动的onCreate()
方法
ViewConfiguration configure = ViewConfiguration.get(context);
Field menuField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if (menuField != null) {
menuField.setAccessible(true);
menuField.setBoolean(config, false);
}
答案 2 :(得分:0)
您必须检查您的应用程序主题是否在其中没有操作。如果您共享主题或styles.xml将会很有帮助