如何使用 NavigationView 在工具栏中添加另一个图标
How to add another icon in the toolbar with NavigationView
我已经使用 NavigationDrawer
创建了一个 Android 应用程序。创建应用程序时,默认设置了一个图标菜单,放置在工具栏的左侧。我的目标是添加另一个图标,例如,放置在工具栏的右侧。我已经尝试了很多教程,一步一步地跟着他们,但我无法实现。谁能帮帮我?
在activity
override fun onCreateOptionsMenu(menu: Menu): Boolean {
val inflater: MenuInflater = menuInflater
inflater.inflate(R.menu.game_menu, menu)
return true
}
处理菜单项的点击
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle item selection
return when (item.itemId) {
R.id.new_game -> {
newGame()
true
}
R.id.help -> {
showHelp()
true
}
else -> super.onOptionsItemSelected(item)
}
}
在菜单文件夹中 game_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_game"
android:icon="@drawable/ic_new_game"
android:title="@string/new_game"
android:showAsAction="always"/> // this icon will be always shown
<item android:id="@+id/help"
android:icon="@drawable/ic_help"// add you icon image
android:title="@string/help"
android:showAsAction="ifRoom"/> // this icon will be shown if there is space available
</menu>
如果您将工具栏设置为操作栏 (setSupportActionBar(Toolbar)) 或单独使用操作栏:
在你的Activity中:
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
getMenuInflater().inflate(R.layout.menu_home, menu)
return true
}
在 res -> menu
文件夹中添加一个名为 menu_home
的新文件(如果菜单文件夹不存在则创建一个):
将您需要的项目添加到 menu_home
文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/item_01"
android:title="@string/my_title"
android:icon="@drawable/my_icon"
app:showAsAction="ifRoom"/>
...
</menu>
showAsAction="ifRoom"
使图标在工具栏中可用(如果有空间)。您还可以在弹出菜单中找到 never
选项。
如果您仅使用工具栏(未设置为操作栏):
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
app:menu="@menu/menu_home"
android:layout_height="?android:attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
您需要创建一个菜单来完成此任务。例如;
res/menu/menu_main.xml
:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/new_item"
android:icon="@drawable/new_icon"
app:showAsAction="ifRoom">
</item>
</menu>
如果您已有菜单,则可以继续。
创建菜单后,需要对其进行扩充。
public class MainActivity extends AppCompatActivity {
@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_main, menu);
return true;
}
}
有关使用菜单资源的更多详细信息,请参阅此内容:https://developer.android.com/guide/topics/resources/menu-resource
在你的 menu.xml 添加:
<item
android:title="icon"
app:showAsAction="always"
android:id="@+id/menuitem_icon"
android:icon="@drawable/micon"
>
</item>
然后在OnCreateView中:setHasOptionsMenu(true);关闭下面的 OncreateView 写这个方法:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.icon, menu);
...
}
我已经使用 NavigationDrawer
创建了一个 Android 应用程序。创建应用程序时,默认设置了一个图标菜单,放置在工具栏的左侧。我的目标是添加另一个图标,例如,放置在工具栏的右侧。我已经尝试了很多教程,一步一步地跟着他们,但我无法实现。谁能帮帮我?
在activity
override fun onCreateOptionsMenu(menu: Menu): Boolean {
val inflater: MenuInflater = menuInflater
inflater.inflate(R.menu.game_menu, menu)
return true
}
处理菜单项的点击
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle item selection
return when (item.itemId) {
R.id.new_game -> {
newGame()
true
}
R.id.help -> {
showHelp()
true
}
else -> super.onOptionsItemSelected(item)
}
}
在菜单文件夹中 game_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_game"
android:icon="@drawable/ic_new_game"
android:title="@string/new_game"
android:showAsAction="always"/> // this icon will be always shown
<item android:id="@+id/help"
android:icon="@drawable/ic_help"// add you icon image
android:title="@string/help"
android:showAsAction="ifRoom"/> // this icon will be shown if there is space available
</menu>
如果您将工具栏设置为操作栏 (setSupportActionBar(Toolbar)) 或单独使用操作栏:
在你的Activity中:
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
getMenuInflater().inflate(R.layout.menu_home, menu)
return true
}
在 res -> menu
文件夹中添加一个名为 menu_home
的新文件(如果菜单文件夹不存在则创建一个):
将您需要的项目添加到 menu_home
文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/item_01"
android:title="@string/my_title"
android:icon="@drawable/my_icon"
app:showAsAction="ifRoom"/>
...
</menu>
showAsAction="ifRoom"
使图标在工具栏中可用(如果有空间)。您还可以在弹出菜单中找到 never
选项。
如果您仅使用工具栏(未设置为操作栏):
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
app:menu="@menu/menu_home"
android:layout_height="?android:attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
您需要创建一个菜单来完成此任务。例如;
res/menu/menu_main.xml
:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/new_item"
android:icon="@drawable/new_icon"
app:showAsAction="ifRoom">
</item>
</menu>
如果您已有菜单,则可以继续。
创建菜单后,需要对其进行扩充。
public class MainActivity extends AppCompatActivity {
@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_main, menu);
return true;
}
}
有关使用菜单资源的更多详细信息,请参阅此内容:https://developer.android.com/guide/topics/resources/menu-resource
在你的 menu.xml 添加:
<item
android:title="icon"
app:showAsAction="always"
android:id="@+id/menuitem_icon"
android:icon="@drawable/micon"
>
</item>
然后在OnCreateView中:setHasOptionsMenu(true);关闭下面的 OncreateView 写这个方法:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.icon, menu);
...
}