长春免费建站专业做网站官网
具体实现方法和上节的折叠菜单差不多
首先是做一个menu文件然后在添加菜单的方法内获取,然后在点击事件方法中设置点击事件,区别就是,这里需要新建一个textview尺寸需要占满屏幕,然后在注册方法中注册这个textview就可以点击改变这个textview的背景颜色了
首先创建menu文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/red"android:title="红色"android:orderInCategory="1"></item><itemandroid:id="@+id/blue"android:title="蓝色"android:orderInCategory="2"></item><itemandroid:id="@+id/green"android:title="绿色"android:orderInCategory="3"></item></menu>
然后在主页面添加一个文字组件,尺寸填满屏幕
<?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"><TextViewandroid:id="@+id/tv"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="长按我改变背景颜色"android:textSize="24sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintHorizontal_bias="1.0"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.0" /></androidx.constraintlayout.widget.ConstraintLayout>
最后在主页面写逻辑
package com.example.contextmenu;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {private TextView textView;//声明一个textview@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = findViewById(R.id.tv);//把声明的textview绑定registerForContextMenu(textView);//把上下文菜单注册到textview上}/*** 创建上下文菜单的方法* @param menu* @param v* @param menuInfo*/@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {super.onCreateContextMenu(menu, v, menuInfo);getMenuInflater().inflate(R.menu.menu_colour,menu);}/*** 设置上下文菜单点击事件的方法* @param item* @return* textView.setBackgroundColor(Color.RED);* 设置背景颜色的方法*/@Overridepublic boolean onContextItemSelected(@NonNull MenuItem item) {switch (item.getItemId()){case R.id.red:textView.setBackgroundColor(Color.RED);break;case R.id.blue:textView.setBackgroundColor(Color.BLUE);break;case R.id.green:textView.setBackgroundColor(Color.GREEN);break;}return super.onContextItemSelected(item);}
}
最终效果