Fragment의 RecyclerView에 아이템으로 팝업 메뉴를 다는 방법을 연습해보겠습니다.
📙 완성본
📙 과정
1. RecyclerView에 Button을 만들어줍니다
저는 참고로 ImageButton으로 생성했습니다.
<ImageButton
android:id="@+id/boardDetail_ibtn_more"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginEnd="20dp"
android:background="@android:color/transparent"
android:scaleType="centerInside"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@drawable/morecion" />
2. 이제 MenuItem도 만들어줍니다
이 부분은 res > 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/menu_edit"
android:title="수정"/>
<item
android:id="@+id/menu_delete"
android:title="삭제"/>
</menu>
3. Adapter에 클릭이벤트를 연결합니다
지금 진행중인 프로젝트에 사용된 코드여서 필요 없는 부분은 안 보셔도 돼요!
more.setOnClickListener {
val popup:PopupMenu = PopupMenu(context,more)
MenuInflater(context).inflate(R.menu.board_menu_item, popup.menu)
popup.show()
popup.setOnMenuItemClickListener {
when(it.itemId){
R.id.menu_edit -> {
itemmodifyListener.onClick(bindingAdapterPosition)
return@setOnMenuItemClickListener true
}
R.id.menu_delete ->{
BoardService().deleteBoardDetail(boardList[position].id, DeleteCallback(position))
Log.d(TAG, "onBindViewHolder: ${boardList[position].id}")
return@setOnMenuItemClickListener true
}else->{
return@setOnMenuItemClickListener false
}
}
}
}
💡 꿀팁
val popup:PopupMenu = PopupMenu(context, more)에서 more이 저는 ImageButton입니다!
즉, 본인이 팝업메뉴를 띄우고 싶은 부분을 저 부분에 적어주셔야 그 위에 팝업 메뉴가 이쁘게 위치합니다.
PopupMenu( context , popupmenu를 띄울위치 )
'Android Studio > Front' 카테고리의 다른 글
[Android Studio][Kotlin] 캘린더 Custom UI (0) | 2022.04.01 |
---|---|
[Android Studio][안드로이드스튜디오] RecyclerView &Filterable & TabLayout (0) | 2022.01.20 |