我的应用有操作栏,但没有 menu.xml。如何修改我的操作栏?
My app has an action bar, but no menu.xml. How do I modify my action bar?
您好,感谢阅读,
当我第一次制作我的项目时,Android Studio 提示我选择样板。我选择了空 activity (没有 FAB 和其他的)。不过,我的应用程序有一个 ActionBar
,但它只显示名称。现在,我想修改那个操作栏并添加一个菜单。我的 java 扩展了 AppCompatActivity
,所以有一个操作栏。但是,与我以前在 eclipse 中的经验不同,没有我可以找到的菜单 xml。
如何通过其他方式添加或修改我的操作?我可以手动添加一个吗?
谢谢!
1) 您需要创建(或修改,如果存在)您的菜单资源文件,/res/menu/main_menu.xml
以创建操作。
例如:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_refresh"
android:showAsAction="always"
android:icon="@drawable/ic_action_refresh"
android:title="Refresh"/>
<item
android:id="@+id/action_settings"
android:showAsAction="always"
android:icon="@drawable/ic_action_setting"
android:title="Settings">
</item>
</menu>
2) 覆盖 activity 中的 onCreateOptionsMenu()
以允许扩充 XML 中定义的操作:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
3) 覆盖 onOptionsItemSelected()
以响应操作选择:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_refresh:
Toast.makeText(this, "Refresh selected", Toast.LENGTH_SHORT).show();
break;
case R.id.action_settings:
Toast.makeText(this, "Settings selected", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
您好,感谢阅读,
当我第一次制作我的项目时,Android Studio 提示我选择样板。我选择了空 activity (没有 FAB 和其他的)。不过,我的应用程序有一个 ActionBar
,但它只显示名称。现在,我想修改那个操作栏并添加一个菜单。我的 java 扩展了 AppCompatActivity
,所以有一个操作栏。但是,与我以前在 eclipse 中的经验不同,没有我可以找到的菜单 xml。
如何通过其他方式添加或修改我的操作?我可以手动添加一个吗?
谢谢!
1) 您需要创建(或修改,如果存在)您的菜单资源文件,/res/menu/main_menu.xml
以创建操作。
例如:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_refresh"
android:showAsAction="always"
android:icon="@drawable/ic_action_refresh"
android:title="Refresh"/>
<item
android:id="@+id/action_settings"
android:showAsAction="always"
android:icon="@drawable/ic_action_setting"
android:title="Settings">
</item>
</menu>
2) 覆盖 activity 中的 onCreateOptionsMenu()
以允许扩充 XML 中定义的操作:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
3) 覆盖 onOptionsItemSelected()
以响应操作选择:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_refresh:
Toast.makeText(this, "Refresh selected", Toast.LENGTH_SHORT).show();
break;
case R.id.action_settings:
Toast.makeText(this, "Settings selected", Toast.LENGTH_SHORT).show();
break;
}
return true;
}