北京好网站制作公司,永兴集团网站,红河学院网站建设,什么网站可以查房屋建筑面积目录
Android ContextMenu 上下文菜单
ContextMenu
范例
参考文档
Android SubMenu 子菜单
范例
参考文档
Android PopupMenu 弹出菜单
范例
参考文档 Android ContextMenu 上下文菜单
在Android开发中#xff0c;ContextMenu#xff08;上下文菜单#xff09;为…目录
Android ContextMenu 上下文菜单
ContextMenu
范例
参考文档
Android SubMenu 子菜单
范例
参考文档
Android PopupMenu 弹出菜单
范例
参考文档 Android ContextMenu 上下文菜单
在Android开发中ContextMenu上下文菜单为用户提供了一种简便的方式来执行对特定组件的操作。例如长按列表中的一个项目时可能会出现一个菜单让用户选择“编辑”、“删除”等操作。
ContextMenu
Android提供了一种非常简单的方式来创建和处理上下文菜单ContextMenu主要通过在Activity中重写几个关键方法来实现。
这种方式不依赖于XML布局文件或是直接实例化某个类而是通过与Activity生命周期紧密相关的几个回调方法来管理。
1. registerForContextMenu(View view)
说明这个方法用于为特定的View注册上下文菜单。当用户长按该View时就会触发上下文菜单的显示。使用场景通常在Activity的onCreate()方法中调用此方法为想要显示上下文菜单的View注册。
2. onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
说明当注册了上下文菜单的View被长按时这个方法会被调用。在这里你可以定义上下文菜单的内容比如菜单项。使用场景需要重写这个方法来填充上下文菜单例如添加菜单项。
3. onContextItemSelected(MenuItem item)
说明用户选择上下文菜单中的某个项时这个方法会被触发。在这里你可以处理用户的点击事件。使用场景需要重写这个方法来响应用户对上下文菜单项的选择。
调用顺序和流程
注册上下文菜单在onCreate()方法中通过调用registerForContextMenu(view)为特定的View注册上下文菜单。创建上下文菜单当用户长按已注册的View时会自动调用onCreateContextMenu(menu, v, menuInfo)方法在这里定义上下文菜单的内容。响应菜单项点击用户点击上下文菜单中的某个项时onContextItemSelected(MenuItem item)方法会被调用在这里处理点击事件。
范例
1、修改 activity_main.xml
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentxmlns:toolshttp://schemas.android.com/toolsandroid:orientationverticalandroid:gravitycentertools:context.MainActivityListViewandroid:idid/listviewandroid:layout_widthmatch_parentandroid:layout_heightwrap_content /
/LinearLayout2、修改 MainActivity.java
package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {ListView listView;String[] items {Java, C#, Python, Ruby, PHP, C, Go, Swift, Kotlin, JavaScript};Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView findViewById(R.id.listview);ArrayAdapterString adapter new ArrayAdapter(this, android.R.layout.simple_list_item_1, items);listView.setAdapter(adapter);// 注册 Context MenuregisterForContextMenu(listView);}// 创建 Context MenuOverridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {super.onCreateContextMenu(menu, v, menuInfo);getMenuInflater().inflate(R.menu.context_menu, menu);}// 处理 Context Menu 项点击事件Overridepublic boolean onContextItemSelected(MenuItem item) {AdapterView.AdapterContextMenuInfo info (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();int itemId item.getItemId();if (itemId R.id.action_edit) {Toast.makeText(this, 编辑 items[info.position], Toast.LENGTH_SHORT).show();return true;} else if (itemId R.id.action_delete) {Toast.makeText(this, 删去 items[info.position], Toast.LENGTH_SHORT).show();return true;} else {return super.onContextItemSelected(item);}}
}
3、在res/menu目录下创建一个名为context_menu.xml的文件如果没有menu目录则需要创建它。
?xml version1.0 encodingutf-8?
menu xmlns:androidhttp://schemas.android.com/apk/res/androiditemandroid:idid/action_editandroid:title编辑/itemandroid:idid/action_deleteandroid:title删去/
/menu
参考文档
Android menus
Android SubMenu 子菜单
在Android开发中SubMenu子菜单是一种常用的UI组件允许在一个主菜单项下创建一个二级菜单。这对于分类和组织复杂的菜单项非常有用可以帮助用户更好地导航应用的功能。子菜单不是单独存在的而是在 OptionMenu 或者 ContextMenu 中可以添加子菜单
范例
1、创建菜单资源文件 首先需要在res/menu目录下创建一个XML文件来定义菜单项比如main_menu.xml。
?xml version1.0 encodingutf-8?
menu xmlns:androidhttp://schemas.android.com/apk/res/android!-- checkableBehavior 的可选值由三个single设置为单选all为多选none为普通选项 --group android:checkableBehaviornoneitem android:idid/createandroid:title新建 /item android:idid/editandroid:title编辑 //groupitem android:idid/saveallandroid:title子菜单 menu xmlns:androidhttp://schemas.android.com/apk/res/androiditem android:idid/saveandroid:title保存 /item android:idid/save_asandroid:title另存为... /itemandroid:idid/save_allandroid:title保存全部 //menu/itemitem android:idid/helpandroid:title帮助 /
/menu
2、修改 activity_main.xml
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentxmlns:toolshttp://schemas.android.com/toolsandroid:orientationverticalandroid:gravitycentertools:context.MainActivityButtonandroid:idid/btn_popandroid:text长按我弹出上下文菜单android:layout_widthwrap_contentandroid:layout_heightwrap_content /
/LinearLayout3、修改 MainActivity.java
package com.example.myapplication;import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btnPop findViewById(R.id.btn_pop);registerForContextMenu(btnPop);}Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {super.onCreateContextMenu(menu, v, menuInfo);getMenuInflater().inflate(R.menu.main_menu, menu);}Overridepublic boolean onContextItemSelected(MenuItem item) {int itemId item.getItemId();if (itemId R.id.create) {// 处理新建操作return true;} else if (itemId R.id.edit) {// 处理编辑操作return true;} else if (itemId R.id.save) {// 处理保存操作return true;} else if (itemId R.id.save_as) {// 处理另存为操作return true;} else if (itemId R.id.save_all) {// 处理保存全部操作return true;} else if (itemId R.id.help) {// 处理帮助操作return true;} else {return super.onContextItemSelected(item);}}}参考文档
Android menus
Android PopupMenu 弹出菜单
在Android开发中PopupMenu是一个非常有用的组件它可以在用户界面的任何位置显示一个弹出菜单。这个菜单可以通过编程方式动态创建也可以从XML菜单资源文件加载。
PopupMenu在Android中是一个用于显示上下文菜单的非常方便的组件它可以附着在指定的视图View上。PopupMenu有几种构造方法允许你根据需要选择不同的参数来创建弹出菜单。以下是如何使用这些构造方法以及如何设置和显示PopupMenu的具体步骤
基本构造方法PopupMenu(Context context, View anchor): 这是最基本的构造函数只需要上下文通常是Activity和锚点视图即触发弹出菜单的视图。指定重力的构造方法PopupMenu(Context context, View anchor, int gravity): 这个构造函数除了上下文和锚点视图外还允许你指定弹出菜单的重力gravity例如Gravity.END控制菜单显示的位置相对于锚点视图。完全自定义样式的构造方法PopupMenu(Context context, View anchor, int gravity, int popupStyleAttr, int popupStyleRes): 这是最灵活的构造函数它除了上述参数外还允许你通过popupStyleAttr和popupStyleRes指定弹出菜单的样式。
范例
步骤1: 创建菜单资源文件 首先在res/menu目录下创建一个名为main_menu.xml的菜单资源文件。
?xml version1.0 encodingutf-8?
menu xmlns:androidhttp://schemas.android.com/apk/res/androiditemandroid:idid/action_item1android:title选项 1/itemandroid:idid/action_item2android:title选项 2/itemandroid:idid/action_item3android:title选项 3/
/menu步骤2: 修改 activity_main.xml
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentxmlns:toolshttp://schemas.android.com/toolsandroid:orientationverticalandroid:gravitycentertools:context.MainActivityButtonandroid:idid/button_show_popupandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text显示弹出菜单android:layout_centerInParenttrue/
/LinearLayout步骤3: 修改 MainActivity.java
package com.example.myapplication;import android.os.Bundle;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button buttonShowPopup findViewById(R.id.button_show_popup);buttonShowPopup.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// 创建PopupMenu实例PopupMenu popupMenu new PopupMenu(MainActivity.this, v, Gravity.RIGHT);// 从XML资源文件中填充菜单项popupMenu.getMenuInflater().inflate(R.menu.main_menu, popupMenu.getMenu());// 设置菜单项点击事件popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {Overridepublic boolean onMenuItemClick(MenuItem item) {Toast.makeText(MainActivity.this, 选中了: item.getTitle(), Toast.LENGTH_SHORT).show();return true;}});// 显示PopupMenupopupMenu.show();}});}
}参考文档
Android menus