Kotlin Android弹出菜单

Android弹出菜单是一个垂直于视图显示的列表菜单。如果没有空间, 则弹出菜单将显示在视图下方, 否则将显示在上方。触摸外部以弹出菜单使其消失。
弹出菜单提供与特定内容相关的操作, 并且不会影响相应的内容。
如果菜单项没有单击侦听器, 则PopupMenu.OnMenuItemClickListener接口将接收菜单项的单击事件。
Kotlin Android弹出菜单示例 在此示例中, 我们将在视图(按钮)上添加弹出菜单项。单击该按钮将显示弹出菜单项, 我们可以在这些菜单项上执行相关操作。
创建一个android项目, 然后选择基本活动。此活动自动生成菜单代码。
activity_main.xml
将以下代码添加到activity_main.xml文件的布局目录中。此代码在创建基本活动时自动生成。

< ?xml version="1.0" encoding="utf-8"?> < android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="example.srcmini.com.kotlinpopupmenu.MainActivity"> < android.support.design.widget.AppBarLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:theme="@style/AppTheme.AppBarOverlay"> < android.support.v7.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="?attr/colorPrimary"app:popupTheme="@style/AppTheme.PopupOverlay" /> < /android.support.design.widget.AppBarLayout> < include layout="@layout/content_main" /> < /android.support.design.widget.CoordinatorLayout>

content_main.xml
在布局目录的content_main.xml文件中添加以下代码。在此布局中, 我们放置一个Button View组件。
< ?xml version="1.0" encoding="utf-8"?> < android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"tools:context="example.srcmini.com.kotlinpopupmenu.MainActivity"tools:showIn="@layout/activity_main"> < Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="8dp"android:layout_marginEnd="8dp"android:layout_marginStart="8dp"android:layout_marginTop="8dp"android:text="Button"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /> < /android.support.constraint.ConstraintLayout>

strings.xml
在strings.xml文件中添加以下代码。
< resources> < string name="app_name"> Kotlin PopupMenu< /string> < string name="action_settings"> Settings< /string> < string name="action_cricket"> Cricket< /string> < string name="action_football"> Football< /string> < string name="action_hockey"> Hockey< /string> < /resources>

popup_menu.xml
在菜单目录中创建一个名为popup_menu.xml的菜单资源文件。添加item标记, 该标记为弹出菜单创建菜单项。
< ?xml version="1.0" encoding="utf-8"?> < menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"> < itemandroid:id="@+id/action_crick"android:title="@string/action_cricket"app:showAsAction="never"/> < itemandroid:id="@+id/action_ftbal"android:title="@string/action_football"app:showAsAction="never"/> < itemandroid:id="@+id/action_hockey"android:title="@string/action_hockey"app:showAsAction="never"/> < /menu>

MainActivity.kt
在MainActivity.kt类中添加以下代码。在此类中, 我们实现PopupMenu.OnMenuItemClickListener接口, 该接口接收菜单项的单击事件。要显示弹出菜单, 请调用PopupMenu.show()方法。
package example.srcmini.com.kotlinpopupmenuimport android.os.Bundleimport android.support.v7.app.AppCompatActivityimport android.widget.Buttonimport android.widget.PopupMenuimport android.widget.Toastimport kotlinx.android.synthetic.main.activity_main.*class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)setSupportActionBar(toolbar)val button = findViewById< Button> (R.id.button)button.setOnClickListener {val popupMenu: PopupMenu = PopupMenu(this, button)popupMenu.menuInflater.inflate(R.menu.popup_menu, popupMenu.menu)popupMenu.setOnMenuItemClickListener(PopupMenu.OnMenuItemClickListener { item -> when(item.itemId) {R.id.action_crick -> Toast.makeText(this@MainActivity, "You Clicked : " + item.title, Toast.LENGTH_SHORT).show()R.id.action_ftbal -> Toast.makeText(this@MainActivity, "You Clicked : " + item.title, Toast.LENGTH_SHORT).show()R.id.action_hockey -> Toast.makeText(this@MainActivity, "You Clicked : " + item.title, Toast.LENGTH_SHORT).show()}true})popupMenu.show()}}}

【Kotlin Android弹出菜单】输出:
Kotlin Android弹出菜单

文章图片
Kotlin Android弹出菜单

文章图片
Kotlin Android弹出菜单

文章图片

    推荐阅读