Android菜单创建和使用
下面展示一些 内联代码片
。
package com.example.myapplication3;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
//可视化的界面
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置内容视图
//R:为每一个资源文件类别分配一个索引
//使程序员可以通过R,类别名,资源名去操作对应的资源
setContentView(R.layout.activity_main);
// registerForContextMenu(findViewById(R.id.button));
findViewById(R.id.button).setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
startActionMode(cb);
return false;
}
});
Button popuBtn = findViewById(R.id.button2);
popuBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PopupMenu menu = new PopupMenu(MainActivity.this, popuBtn);
menu.getMenuInflater().inflate(R.menu.popup, menu.getMenu());
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.copy:
Toast.makeText(MainActivity.this, "复制", Toast.LENGTH_SHORT).show();
break;
case R.id.paste:
Toast.makeText(MainActivity.this, "粘贴", Toast.LENGTH_SHORT).show();
break;
}
return false;
}
});
menu.show();
}
});
}
ActionMode.Callback cb = new ActionMode.Callback() {
@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
Log.e("TAG", "创建: ");
getMenuInflater().inflate(R.menu.context, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
Log.e("TAG", "准备: ");
return false;
}
@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
Log.e("TAG", "点击: ");
switch (menuItem.getItemId()) {
case R.id.delete:
Toast.makeText(MainActivity.this, "删除", Toast.LENGTH_SHORT).show();
break;
case R.id.opera1:
Toast.makeText(MainActivity.this, "操作1", Toast.LENGTH_SHORT).show();
break;
case R.id.opera2:
Toast.makeText(MainActivity.this, "操作2", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
@Override
public void onDestroyActionMode(ActionMode actionMode) {
Log.e("TAG", "退出: ");
}
};
/*
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.context,menu);
}
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.delete:
Toast.makeText(this, "删除", Toast.LENGTH_SHORT).show();
break;
case R.id.opera1:
Toast.makeText(this, "操作1", Toast.LENGTH_SHORT).show();
break;
case R.id.opera2:
Toast.makeText(this, "操作2", Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//getMenuInflater().inflate(R.menu.option, menu);
menu.add(1, 1, 1, "设置");
SubMenu sub = menu.addSubMenu(1, 2, 2, "更多");
sub.add(2, 3, 1, "添加");
sub.add(2, 4, 2, "删除");
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
/*case R.id.save:
Toast.makeText(this, "保存", Toast.LENGTH_SHORT).show();
break;
case R.id.setting:
Toast.makeText(this, "设置", Toast.LENGTH_SHORT).show();
break;
case R.id.exit:
Toast.makeText(this, "退出", Toast.LENGTH_SHORT).show();
break;*/
case 1:
Toast.makeText(this, "设置", Toast.LENGTH_SHORT).show();
break;
case 2:
Toast.makeText(this, "更多", Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(this, "添加", Toast.LENGTH_SHORT).show();
break;
case 4:
Toast.makeText(this, "删除", Toast.LENGTH_SHORT).show();
break;
default:
super.onOptionsItemSelected(item);
}
return true;
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="上下文菜单"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="弹出式菜单"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button" />
</androidx.constraintlayout.widget.ConstraintLayout>
下面展示一些 内联代码片
。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#00ffff"
android:orientation="horizontal"
android:padding="2dp">
<TextView
android:id="@+id/choose"
android:layout_width="60dp"
android:layout_height="30dp"
android:background="#000000"
android:gravity="center"
android:text="选择"
android:textColor="#ffffff" />
<TextView
android:id="@+id/choose_all"
android:layout_width="60dp"
android:layout_height="30dp"
android:background="#000000"
android:gravity="center"
android:text="全选"
android:textColor="#ffffff" />
<TextView
android:id="@+id/copy"
android:layout_width="60dp"
android:layout_height="30dp"
android:background="#000000"
android:gravity="center"
android:text="复制"
android:textColor="#ffffff" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/duihuakuang"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="200dp"
android:text="真的要退出吗?"
android:textColor="#e61414"
android:textSize="34sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="50dp"
android:orientation="horizontal">
<Button
android:id="@+id/yes_btn"
android:layout_width="120dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:background="@mipmap/duihuakuang"
android:text="yes"
android:textSize="24sp" />
<Button
android:id="@+id/no_btn"
android:layout_width="120dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:background="@mipmap/duihuakuang"
android:text="no"
android:textSize="24sp" />
</LinearLayout>
</LinearLayout>
下面展示一些 内联代码片
。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/delete"
android:title="删除" />
<item android:title="重命名" >
<menu >
<item
android:id="@+id/opera1"
android:title="操作1" />
<item
android:id="@+id/opera2"
android:title="操作2" />
</menu>
</item>
</menu>
<?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">
<item
android:id="@+id/save"
android:icon="@mipmap/ic_launcher"
android:title="保存"
app:showAsAction="always|withText" />
<item
android:id="@+id/setting"
android:title="设置" />
<item android:title="更多操作">
<menu>
<item
android:id="@+id/exit"
android:title="退出" />
<item android:title="子菜单2" />
<item android:title="子菜单3" />
</menu>
</item>
</menu>
下面展示一些 内联代码片
。
```javascript
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/copy"
android:title="复制" />
<item
android:id="@+id/paste"
android:title="粘贴" />
</menu>