본문 바로가기

Android | Kotlin 개발 관련 뉴스 & 기술

라이브러리 뉴스 : SplitButton

728x90

👋 SplitButton

 

1️⃣ 개요

스플릿 버튼은 코틀린으로 구현된 기본 액션뿐만 아니라 메뉴 세트 중 선택하여 다른 동작을 할 수 있도록 이중 기능을 하는 버튼입니다.

 

2️⃣ 설정

build.gradle 파일에 종속성 추가가 필요합니다.

1. 프로젝트 수준
allprojects {
    repositories {
        //...omitted for brevity
        maven { url 'https://jitpack.io' }
    }
}

2. 앱 수준
dependencies {
   implementation "com.github.kojofosu:SplitButton:$latest_release"
}

 

3️⃣사용법

레이아웃을 담당하는 xml 파일에 스플릿 버튼을 추가합니다.

<com.mcdev.splitbuttonlibrary.SplitButton
        android:id="@+id/split_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

 

스플릿 버튼을 초기화 및 커스터마이즈 합니다.

 var splitBtn: SplitButton = findViewById(R.id.split_btn)
    
    splitBtn.setTextColor(R.color.black)
    splitBtn.setIconColor(android.R.color.white)
    splitBtn.setBgColor(android.R.color.holo_orange_light)
    splitBtn.setMenuItems(R.menu.split_menu)
    splitBtn.itemColor = android.R.color.holo_blue_dark // set menu items color

 

버튼 리스너

 splitBtn.setOnButtonClickListener(object : OnButtonClickListener {
                override fun onClick(itemId: Int, itemTitle: String?) {
                    Log.d("TAG", "onClick: id :$itemId")
                    Log.d("TAG", "onClick: title :$itemTitle")
                    if (itemId == R.id.send) {

                        Toast.makeText(this@MainActivity, "Send", Toast.LENGTH_SHORT).show()
                        Log.d("TAG", "onClick: send  ")
                    }else if (itemId == R.id.sfl) {

                        Toast.makeText(this@MainActivity, "Save for later", Toast.LENGTH_SHORT).show()
                        Log.d("TAG", "onClick: bookmark ")
                    } else if (itemId == R.id.draft) {
                        Toast.makeText(this@MainActivity, "Draft", Toast.LENGTH_SHORT).show()
                    }
                }
            })

 

메뉴 목록을 생성해 항목을 추가합니다.

<menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:id="@+id/send"
            android:icon="@drawable/ic_paper_plane"
            android:title="Send"/>
    
        <item
            android:id="@+id/sfl"
            android:icon="@drawable/ic_calendar"
            android:title="Schedule"/>
    
        <item
            android:id="@+id/draft"
            android:icon="@drawable/ic_bookmark"
            android:title="Draft"/>
    </menu>

 

배경색 등을 변경하기 위한 스타일을 지정하려는 경우 참고하시면 됩니다.

    <style name="PopMen" parent="Widget.AppCompat.PopupMenu.Overflow">
        <!-- change menu text color-->
        <item name="android:textColor">@android:color/black</item> 
        <!--change popup menu background color-->
        <item name="popupMenuBackground">@android:color/holo_orange_light</item>

        <item name="android:radius">30dp</item>
        <item name="cardCornerRadius">30dp</item>
        <item name="cornerRadius">30dp</item>
    </style>

 

https://github.com/kojofosu/SplitButton

 

GitHub - kojofosu/SplitButton: A dual-function menu button that offers a default action as well as the possibility of choosing a

A dual-function menu button that offers a default action as well as the possibility of choosing a different action by selecting from a set of alternatives. - GitHub - kojofosu/SplitButton: A dual-...

github.com