具体实现方法和上节的折叠菜单差不多
首先是做一个menu文件然后在添加菜单的方法内获取,然后在点击事件方法中设置点击事件,区别就是,这里需要新建一个textview尺寸需要占满屏幕,然后在注册方法中注册这个textview就可以点击改变这个textview的背景颜色了
首先创建menu文件
然后在主页面添加一个文字组件,尺寸填满屏幕
最后在主页面写逻辑
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
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.tv);
//把声明的textview绑定
registerForContextMenu(textView);
//把上下文菜单注册到textview上
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.menu_colour,menu);
}
@Override
public 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);
}
}
最终效果



