app - src - main - res - menu에 Menu리소스파일 만들기
// context_menu_main.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/text_color"
android:title="글자색 변경"/>
<item
android:id="@+id/text_back_color"
android:title="배경색 변경"/>
<item
android:id="@+id/text_basic"
android:title="초기화"/>
</menu>
buildFeatures{
viewBinding true
}
객체화 시키기 위한 코드작성 (오른쪽 위 sync now 꼭 눌러주기)
class MainActivity : AppCompatActivity() {
val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
registerForContextMenu(binding.textView)
}
// ContextMenu 생성
override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) {
menuInflater.inflate(R.menu.context_menu_main, menu)
}
// 각 메뉴 선택 시 효과
override fun onContextItemSelected(item: MenuItem): Boolean {
val textView = findViewById<TextView>(R.id.textView)
when(item?.itemId){
R.id.text_color -> {
textView.text = "글자색 파란색으로 변경" // textView의 text를 변경
textView.setTextColor(Color.BLUE) // 글자색을 파란색으로
}
R.id.text_back_color -> {
textView.text = "배경색 빨간색으로 변경" // textView의 text를 변경
textView.setBackgroundColor(Color.RED) // 배경색을 빨간색으로
}
R.id.text_basic -> { // 초기상태로 되돌리기
textView.text = "contextMenu 보기"
textView.setBackgroundColor(Color.WHITE)
textView.setTextColor(Color.GRAY)
}
}
return super.onContextItemSelected(item)
}
}
실행 시 초기화면
꾹 누르면 메뉴노출
배경색 변경 선택 시 효과