[Android] ToggleButton, Switch

Jbro·2023년 8월 8일
0

Android 기초

목록 보기
15/23
post-thumbnail
post-custom-banner

Android의 ToggleButton과 Switch 모두 앱에서 사용자가 토글형식의 스위치를 조작할 수 있는 View이다.

ToggleButton은 두 가지 상태를 가진 스위치로 누를 때 마다 상태가 변경된다.

Switch도 마찬가지로 두 가지 상태를 가진 스위치이지만, 좀 더 상태를 알기쉽고 현대적인 디자인을 가지고 있다.


ToggleButton과 Switch를 포함한 xml 코드

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/textView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:textAppearance="@style/TextAppearance.AppCompat.Large" />

            <TextView
                android:id="@+id/textView2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:textAppearance="@style/TextAppearance.AppCompat.Large" />

            <TextView
                android:id="@+id/textView3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:textAppearance="@style/TextAppearance.AppCompat.Large" />

            <Button
                android:id="@+id/button"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Button" />

            <Button
                android:id="@+id/button2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Button" />

            <Button
                android:id="@+id/button3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Button" />

            <Button
                android:id="@+id/button4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Button" />

            <ToggleButton
                android:id="@+id/toggleButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="ToggleButton"
                android:textOff="Off 상태 입니다"
                android:textOn="On 상태 입니다" />

            <Switch
                android:id="@+id/switch1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:showText="true"
                android:text="스위치"
                android:textAppearance="@style/TextAppearance.AppCompat.Large"
                android:textOff="OFF"
                android:textOn="ON"
                android:thumb="@mipmap/ic_launcher"
                android:track="@android:drawable/bottom_bar" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>

MainActivity 코드

class MainActivity : AppCompatActivity() {

    lateinit var activityMainBinding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(activityMainBinding.root)
        
        activityMainBinding.run{
            button.run{
                setOnClickListener {
                    // Toggle Button 의 ON/OFF 상태를 가져온다.
                    if(toggleButton.isChecked){
                        textView.text = "ToggleButton : ON 상태입니다\n"
                    } else {
                        textView.text = "ToggleButton : OFF 상태입니다\n"
                    }
                    // Switch의 ON/OFF 상태를 가져온다.
                    if(switch1.isChecked){
                        textView.append("Switch : ON 상태입니다\n")
                    } else {
                        textView.append("Switch : OFF 상태입니다\n")
                    }
                }
            }

            button2.run{
                setOnClickListener {
                    // Toggle Button을 ON 상태로 설정한다.
                    toggleButton.isChecked = true
                    // switch ON 상태로 설정한다.
                    switch1.isChecked = true
                }
            }

            button3.run{
                setOnClickListener {
                    // Toggle Button을 OFF 상태로 설정한다.
                    toggleButton.isChecked = false
                    // switch를 OFF 상태로 설정한다.
                    switch1.isChecked = false
                }
            }

            button4.run{
                setOnClickListener {
                    // Toggle Button을 반전시킨다.
                    toggleButton.toggle()
                    // Switch를 반전시킨다.
                    switch1.toggle()
                }
            }
            
            // Toggle button의 ON/OFF 상태가 변경될 때의 리스너
            toggleButton.run{
                setOnCheckedChangeListener { buttonView, isChecked -> 
                    if(isChecked == true){
                        textView2.text = "Toggle 버튼이 ON 상태입니다\n"
                    } else {
                        textView2.text = "Toggle 버튼이 OFF 상태입니다\n"
                    }
                }
            }

            // Switch의 ON/OFF 상태가 변결될 때의 리스너
            switch1.run{
                setOnCheckedChangeListener { buttonView, isChecked ->
                    if(isChecked == true){
                        textView2.append("Switch가 ON 상태입니다\n")
                    } else {
                        textView2.append("Switch가 OFF 상태 입니다\n")
                    }
                }
            }
        }
    }
}

실행 화면

profile
안드로이드 개발자 꿈나무
post-custom-banner

0개의 댓글