Android 中的溢出项目
溢出项是 Android 应用程序工具栏中可用的溢出菜单项。可以通过单击三个点 (3) 访问溢出菜单中的元素。这些元素可以显示在菜单之外,也可以显示在 (1) 和 (2) 之外。
在本文中,我们将向您展示如何在 Android 中添加溢出项。 IDE 准备就绪后,请按照以下步骤操作。
分步实施
第 1 步:在 Android Studio 中创建一个新项目
要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。我们在 Kotlin 中演示了该应用程序,因此请确保在创建新项目时选择Kotlin作为主要语言。
第 2 步:为各种菜单项创建矢量资产
请参阅如何在 Android Studio 中添加矢量资源?了解如何创建矢量资产。
第 3 步:创建菜单文件 (menu.xml)
要创建菜单文件,请右键单击 res 文件夹,转到新建,然后单击 Android 资源目录。选择资源类型作为菜单,然后单击确定。创建菜单文件可以参考下图。
第 4 步:在 menu.xml 文件中添加项目
创建 menu.xml 文件后,可以按如下所示的方式添加项目。您可以在以下项目中观察到多个属性,但顺序和操作是最重要的。 Order 表示该项目在菜单中的位置,而 action 表示如果空间可用则显示它。
XML
Kotlin
package org.geeksforgeeks.androidoverflow
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import android.widget.Toolbar
import androidx.annotation.RequiresApi
import androidx.core.graphics.toColor
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
// Inflate the menu
val inflater = menuInflater
inflater.inflate(R.menu.menu, menu)
return true
}
@RequiresApi(Build.VERSION_CODES.O)
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Toasts are generated when
// below items are selected
return when (item.itemId) {
R.id.option1 -> {
Toast.makeText(applicationContext, "Bluetooth Option Selected", Toast.LENGTH_SHORT).show()
true
}
R.id.option2 -> {
Toast.makeText(applicationContext, "Chat Option Selected", Toast.LENGTH_SHORT).show()
true
}
else -> super.onOptionsItemSelected(item)
}
}
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
// Below items are displayed outside the menu
invalidateOptionsMenu()
menu.findItem(R.id.option1).isVisible = true
menu.findItem(R.id.option2).isVisible = true
return super.onPrepareOptionsMenu(menu)
}
}
第 5 步:使用MainActivity.kt 文件
转到MainActivity.kt文件并参考以下代码。下面是MainActivity.kt文件的代码。在主代码中,我们主要尝试对创建的菜单进行充气。代码中添加了注释以更详细地理解代码。
科特林
package org.geeksforgeeks.androidoverflow
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import android.widget.Toolbar
import androidx.annotation.RequiresApi
import androidx.core.graphics.toColor
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
// Inflate the menu
val inflater = menuInflater
inflater.inflate(R.menu.menu, menu)
return true
}
@RequiresApi(Build.VERSION_CODES.O)
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Toasts are generated when
// below items are selected
return when (item.itemId) {
R.id.option1 -> {
Toast.makeText(applicationContext, "Bluetooth Option Selected", Toast.LENGTH_SHORT).show()
true
}
R.id.option2 -> {
Toast.makeText(applicationContext, "Chat Option Selected", Toast.LENGTH_SHORT).show()
true
}
else -> super.onOptionsItemSelected(item)
}
}
override fun onPrepareOptionsMenu(menu: Menu): Boolean {
// Below items are displayed outside the menu
invalidateOptionsMenu()
menu.findItem(R.id.option1).isVisible = true
menu.findItem(R.id.option2).isVisible = true
return super.onPrepareOptionsMenu(menu)
}
}
输出:
您可以看到蓝牙和聊天已创建并显示在菜单之外。在菜单中,所有剩余项目均可用。所有项目都按 orderInCategory 属性排序。