
이번 시간에는 메뉴를 원할 때만 보여주는 동적 메뉴 만드는 방법을 알아보겠습니다.
메뉴 폴더 만드는 방법과 파일 만드는 방법은 이전 포스팅을 보시면 됩니다.
2022.08.23 - [안드로이드] - [안드로이드 코틀린] 옵션 메뉴(OptionMenu), 서브메뉴(Sub Menu) 만드는 방법
[안드로이드 코틀린] 옵션메뉴(OptionMenu), 서브메뉴(Sub Menu) 만드는 방법
이번 시간에는 점 3개 이미지로 익숙한 옵션 메뉴(OptionMenu)와 서브메뉴(Sub Menu) 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메뉴 Menu 3. 메인 코드 MainActivity.kt 1. 실행 화면 2. ..
aries574.tistory.com
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
- 설명 -
1. 동적 메뉴에 쓰이는 아이템
2. 아이콘 res -> drawable
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_delete"
android:icon="@drawable/ic_delete"
android:title="Delete"/>
<item
android:id="@+id/menu_share"
android:icon="@drawable/ic_share"
android:title="Share"/>
</menu>
- 설명 -
1. 동적 메뉴가 보이는 액션바 색상 설정
2. style 태그 안에 추가하면 됩니다.
<item name="actionModeBackground">@color/purple_500</item>
- 설명 -
1. 동적 메뉴 호출하는 Button
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/rootView"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:text="길게 눌러보세요"/>
<Button
android:id="@+id/btn_dynamic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="동적 메뉴"/>
</LinearLayout>
- 설명 -
1. startActionMode
동적메뉴 호출
2. onCreateActionMode
액션 모드 생성 시 호출
3. onPrepareActionMode
액션 모드 준비 시 호출
4. onActionItemClicked
액션 모드 아이템 선택 시 호출
5. onDestroyActionMode
액션 모드 끝나면 호출
class MainActivity : AppCompatActivity(){
lateinit var rootView: LinearLayout
var actionMode: ActionMode? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
rootView = findViewById(R.id.rootView)
val textView: TextView = findViewById(R.id.textView)
//컨텍스트 메뉴 연결
registerForContextMenu(textView)
//버튼 이벤트
val btnDynamic: Button = findViewById(R.id.btn_dynamic)
btnDynamic.setOnLongClickListener {
//액션모드 값이 있다면
if(actionMode != null){
false
}
//동적 메뉴 실행
actionMode = startActionMode(mActionModeCallback)
true
}
}//onCreate
//액션모드 설정
private val mActionModeCallback: ActionMode.Callback = object : ActionMode.Callback{
//액션모드 생성시 호출
override fun onCreateActionMode(mode: ActionMode, menu: Menu?): Boolean {
val menuInflater = mode.menuInflater
menuInflater.inflate(R.menu.dynamic_menu, menu)
return true
}
//액션모드 준비 시 호출
override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean {
return false
}
//액션모드 아이템 선택 시 호출
override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
return when(item.itemId){
R.id.menu_delete ->{
Toast.makeText(applicationContext,"삭제 모드", Toast.LENGTH_SHORT).show()
mode.finish()
true
}
R.id.menu_share -> {
Toast.makeText(applicationContext,"공유 모드", Toast.LENGTH_SHORT).show()
mode.finish()
true
}
else -> false
}
}
//액션모드 끝나면 호출
override fun onDestroyActionMode(p0: ActionMode) {
actionMode = null
}
}
/**
* 컨텍스트메뉴 설정
*/
override fun onCreateContextMenu(
menu: ContextMenu?,
v: View?,
menuInfo: ContextMenu.ContextMenuInfo?
) {
super.onCreateContextMenu(menu, v, menuInfo)
val inflater: MenuInflater = menuInflater
inflater.inflate(R.menu.context_menu, menu)
}
/**
* 컨텍스트메뉴 선택 기능
*/
override fun onContextItemSelected(item: MenuItem): Boolean {
when(item.itemId){
R.id.menu_red -> {
rootView.setBackgroundColor(Color.RED)
return true
}
R.id.menu_blue -> {
rootView.setBackgroundColor(Color.BLUE)
return true
}
R.id.menu_green -> {
rootView.setBackgroundColor(Color.GREEN)
return true
}
else -> return false
}
}
/**
* 옵션메뉴 설정
*/
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
val inflater: MenuInflater = menuInflater
inflater.inflate(R.menu.option_menu, menu)
return true
}
/**
* 옵션메뉴 선택 기능
*/
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId){
R.id.item1 -> {
Toast.makeText(this, "아이템1 선택", Toast.LENGTH_SHORT).show()
return true
}
R.id.item2 -> {
Toast.makeText(this, "아이템2 선택", Toast.LENGTH_SHORT).show()
return true
}
R.id.item3 -> {
Toast.makeText(this, "아이템3 선택", Toast.LENGTH_SHORT).show()
return true
}
R.id.subItem1 -> {
Toast.makeText(this, "서브아이템1 선택", Toast.LENGTH_SHORT).show()
return true
}
R.id.subItem2 ->{
Toast.makeText(this, "서브아이템2 선택", Toast.LENGTH_SHORT).show()
return true
}
else -> return false
}
}
}
2022.08.24 - [안드로이드] - [안드로이드 코틀린 ] 콘텍스트 메뉴(ContextMenu) 바탕화면 변경하는 방법
[안드로이드 코틀린 ] 컨텍스트메뉴(ContextMenu) 바탕화면 변경하는 방법
이번 시간에는 PC에서 마우스 오른쪽 누르면 나오는 메뉴 ContextMenu를 통해 바탕화면 변경하는 방법을 알아보겠습니다. 메뉴 폴더 만드는 방법과 파일 만드는 방법은 이전 포스팅에 이어서 하니
aries574.tistory.com
2022.08.22 - [안드로이드] - [안드로이드 코틀린] 텍스트뷰(TextView) 다양하게 꾸며보는 방법
[안드로이드 코틀린] 텍스트뷰(TextView) 다양하게 꾸며보는 방법
이번 시간에는 SpannableString 를 이용해서 텍스트뷰 꾸미는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 activity_main.xml 3. 메인 코드 MainActivity.kt 1. 실행 화면 2. 메..
aries574.tistory.com
2022.08.19 - [안드로이드] - [안드로이드 코틀린] 속성 애니메이션 (이미지를 움직이게 하는 방법)
[안드로이드 코틀린] 속성 애니메이션 (이미지를 움직이게 하는 방법)
이번 시간에는 속성 애니메이션을 통해 아이콘을 가로, 세로, 회전, 사라지고, 보이는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 activity_main.xml 3. 메인 코드 MainActivity.kt 1. 실..
aries574.tistory.com
| [안드로이드 코틀린] 야구 게임 만드는 방법 part1 - 화면 구성 (0) | 2022.08.29 |
|---|---|
| [안드로이드 코틀린] 텍스트뷰 TextView 클릭 시 효과(ripple)주는 방법 (0) | 2022.08.26 |
| [안드로이드 코틀린 ] 컨텍스트메뉴(ContextMenu) 바탕화면 변경하는 방법 (2) | 2022.08.24 |
| [안드로이드 코틀린] 옵션메뉴(OptionMenu), 서브메뉴(Sub Menu) 만드는 방법 (0) | 2022.08.23 |
| [안드로이드 코틀린] 텍스트뷰(TextView) 다양하게 꾸며보는 방법 (0) | 2022.08.22 |
댓글 영역