상세 컨텐츠

본문 제목

[안드로이드]스피너 드롭다운 셀렉트박스 배경색 바꾸기 setOnItemSelectedListener

안드로이드

by aries574 2020. 6. 9. 08:16

본문


2020/06/08 - [안드로이드] - [안드로이드] 라디오버튼 예제 배경색 바꾸기

이번에는 스피너를 이용해서 배경색을 바꿔보겠습니다. HTML에서는 드롭다운리스트, 셀렉트박스라고 불리고 있습니다.





actvity_main.xml

Spinner이라는 태그안에 colorType라는 id를 사용했습니다.

java(백그라운드)에서 접근하기 위해서는 id가 필수입니다.

<?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">

<LinearLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<Spinner
android:id="@+id/colorType"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:textSize="15sp"
/>
</LinearLayout>

</LinearLayout>

MainActivity.java

1. 배경색을 바꿀 레이아웃 객체와 배경색을 바꾸게 할 스피너 객체 생성

2. 스피너에 들어갈 배열 생성

3. 배열 어뎁터를 생성 및 설정

4. 스피너에 배열 어뎁터 등록

5. 스피너 아이템 선택시 이벤트 생성

import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.Spinner;
import static android.R.layout.simple_spinner_item;


public class MainActivity extends AppCompatActivity {
//레이아웃 선언
LinearLayout layout;

//스피너에 담을 데이터 생성
private String[] colors = {"빨강", "파랑", "초록"};

//스피너 선언
Spinner colorSpinner;

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

//레이아웃 객체생성
layout = findViewById(R.id.layout);

//스피너 객체 생성
colorSpinner = findViewById(R.id.colorType);

//배열 어뎁터 생성및 설정
ArrayAdapter<String> colorsAdapter = new ArrayAdapter<String>(this, simple_spinner_item, colors);
colorsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

//스피너에 어뎁터 셋팅
colorSpinner.setAdapter(colorsAdapter);

//스피너 아이템 선택시 이벤트
colorSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

if(colors[position].equals("빨강")){
layout.setBackgroundColor(Color.rgb(255,0,0));
}
else if(colors[position].equals("파랑"))
{
layout.setBackgroundColor(Color.rgb(0,0,255));
}
else if(colors[position].equals("초록"))
{
layout.setBackgroundColor(Color.rgb(0,255,0));
}
}

@Override
public void onNothingSelected(AdapterView<?> parent) { }
});


}//onCreate()
}


반응형

관련글 더보기

댓글 영역