상세 컨텐츠

본문 제목

[안드로이드] 스위치(Switch) 텍스트뷰 색상변경

안드로이드

by aries574 2020. 6. 11. 12:59

본문


이번 시간에는 스위치를 통해 색상을 변경했다가 다시 원래대로 돌아가게 하는

화면을 만들어 보겠습니다.

안드로이드에서는 Switch태그를 사용합니다.

1. 메인화면(activity_main.xml)

색상을 바꿀 텍스트뷰와 색상을 변경하게 할 스위치를 만듭니다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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">

  <TextView
      android:id="@+id/text_color"
      android:layout_width="200dp"
      android:layout_height="100dp"
      android:layout_centerVertical="true"
      android:layout_centerHorizontal="true"
      />

  <androidx.appcompat.widget.SwitchCompat
      android:id="@+id/sw_change_color"
        android:layout_width="125dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="색상변경"
      android:layout_below="@+id/text_color"
       />

</RelativeLayout>

 

2. 메인코드 기능구현(MainActivity.java)

스위치를 키고 끌 때 이벤트를 발생시키기 위해서는

setCheckedChangedListener 이용하며, 

onCheckedChanged 메소드의 isChecked 매개변수를 통해

사용자가 스위치를 켰는지, 껐는지 알 수 있습니다. 

예제는 스위치를 키면 텍스트뷰의 배경색이 보라색으로 바뀌고,

스위치를 끄게되면, 흰색 배경색으로 바뀌는 간단한 예제입니다.

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SwitchCompat;

import android.graphics.Color;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private TextView text_color;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        text_color = findViewById(R.id.text_color);
        SwitchCompat sw_change_color = findViewById(R.id.sw_change_color);

        sw_change_color.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                if(isChecked){

                    text_color.setText("체크 되었음");
                    text_color.setBackgroundColor(Color.rgb(181, 178, 255));
                }else{
                    text_color.setText("체크 해제");
                    text_color.setBackgroundColor(Color.rgb(255, 255, 255));
                }
            }
        });
    }
}

반응형

관련글 더보기

댓글 영역