Android

您所在的位置:网站首页 网速测试速度怎么测 Android

Android

2024-07-17 10:24:55| 来源: 网络整理| 查看: 265

记录一下我写菜单的代码,我写了一共有三种菜单,从常用到不常用。

目录

  (1)选项菜单

1.Menu的XML文件

 2.Java自定义Adapter代码

 (2)上下文菜单(用了ArrayAdapter适配器)

1.Menu的XML文件

2.Layout文件主代码

3.Java主代码

(3)弹出式菜单

1.Menu的XML文件

 2.Layout主布局

 3.Java主代码

去往三个不同菜单的按钮

package com.example.menutext; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void toOptionMenu(View view) { Intent intent=new Intent(this,OptionMenuActivity.class); startActivity(intent); } public void toContextMenu(View view) { Intent intent=new Intent(this,ContextMenuActivity.class); startActivity(intent); } public void toEjectMenu(View view) { Intent intent=new Intent(this,EjectMenuActivity.class); startActivity(intent); } } **** (1)选项菜单

需要

1.Menu的XML文件

首先Menu的XML文件有几个图标就有几个item,showAsAction是让图标显示在Toolbar上还是不显示在上面。

 2.Java自定义Adapter代码

接下来,我还设置了一下导航栏的title以及返回图标。getSupportActionbar()方法是获取当前Activity的导航栏并返回一个对象,通过对象去设置里面的信息。

里面有两个回调方法,onCreateOptionsMenu()方法是创建一个菜单

onOptionsItemSelected()方法是对菜单里的图标进行操作,获取每个图标的id等于获取了每个菜单里的图标的信息。

package com.example.menutext; import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.Toast; public class OptionMenuActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_option_menu); //获取导航栏 ActionBar actionBar = getSupportActionBar(); actionBar.setTitle("选项菜单"); //设置返回图标 actionBar.setDisplayHomeAsUpEnabled(true); } //创建菜单 @Override public boolean onCreateOptionsMenu(Menu menu) { //绑定menu菜单和xml文件 MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.menu_option,menu); return super.onCreateOptionsMenu(menu); } //对菜单操作 @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { int itemId = item.getItemId(); Toast.makeText(this, item.getTitle() ,Toast.LENGTH_SHORT).show(); switch (itemId){ case R.id.menu_like: return true; case R.id.menu_local: return true; case R.id.menu_share: return true; //对返回图标进行操作 // case android.R.id.home: // this.finish(); // break; default: break; } return false; } }

最后看看效果

(2)上下文菜单(用了ArrayAdapter适配器) 1.Menu的XML文件

这里图个方便,menu文件都用一样的吧,就是上面已经贴出来了再贴一次吧,懒得让你们翻了

2.Layout文件主代码

然后是Layout文件主代码,挺简单的

3.Java主代码

然后就是Java主代码

package com.example.menutext; import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.ContextMenu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.Toast; public class ContextMenuActivity extends AppCompatActivity { Button btn; ListView listView; String[] strings={"1","22","33","55","88","yuyu","huhu","momo" ,"33","55","88","yuyu","huhu","momo"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_context_menu); //获取组件 btn = findViewById(R.id.button); listView= findViewById(R.id.lv); //上下文菜单和其他两个菜单不一样的是控件要想显示菜单必须注册 registerForContextMenu(btn); registerForContextMenu(listView); //获取导航栏(和菜单无关) ActionBar supportActionBar = getSupportActionBar(); supportActionBar.setTitle("上下文菜单"); supportActionBar.setDisplayHomeAsUpEnabled(true); //设置适配器 listView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1,strings)); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); //获取menu的xml文件 MenuInflater menuInflater = getMenuInflater(); //xml文件和此方法绑定,才会被创建 menuInflater.inflate(R.menu.menu_option,menu); } @Override public boolean onContextItemSelected(@NonNull MenuItem item) { //此处是点击ListView中的item中的信息,对Button用会报错 // AdapterView.AdapterContextMenuInfo menuInfo = // (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); // Toast.makeText(this, item.getTitle().toString() // +menuInfo.position, Toast.LENGTH_SHORT).show(); //此处是点击Button,对ListView中的item没用 int id = item.getItemId(); Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show(); return super.onContextItemSelected(item); } }

最后有效果图

(3)弹出式菜单 1.Menu的XML文件

和上面两个都是一样的,看的方便

 2.Layout主布局

点击一下按钮就会弹出菜单,和上下文菜单不同的是上下文菜单要长按才能显示出来

 3.Java主代码

而且弹出式菜单直接new出一个对象设置属性就可以了,比前面两个容易理解,也比较方便,但就是用的比较少,popupMenu的构造函数里面的参数意思是,第一个是上下文,第二个直接把形参view传进去即可,第三个参数是弹出式菜单从鼠标左边弹出来还是右边,我感觉右边比较好(还有一个中间的,但是没啥用好像),其他挺简单的就不注释了hh

package com.example.menutext; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.PopupMenu; import android.os.Bundle; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.Toast; public class EjectMenuActivity extends AppCompatActivity { Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_eject_menu); btn = findViewById(R.id.btn_popup); ActionBar supportActionBar = getSupportActionBar(); supportActionBar.setTitle("弹出式菜单"); supportActionBar.setDisplayHomeAsUpEnabled(true); } public void popup(View view) { PopupMenu popupMenu=new PopupMenu(this,view, Gravity.RIGHT); popupMenu.inflate(R.menu.menu_option); popupMenu.show(); popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { int itemId = item.getItemId(); Toast.makeText(EjectMenuActivity.this,item.getTitle(), Toast.LENGTH_SHORT).show(); return false; } }); } }

最后上效果图



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭