1. 스피너란?
스피너는 보통 콤보박스라고 불리는 위젯입니다.
한 항목 당 글자 하나만을 보여주는 경우가 많고 가끔 이미지와 글자가 함께 보이거나 여러 개의 글자가 보이기도 합니다.
여러 개의 항목 중에서 하나를 선택하는 방식은 앞에서 만들어보았던 리스트뷰와 같습니다.
즉, 선택 위젯에 해당하며 어댑터를 사용해서 만들게 됩니다.
그런데 한 아이템으로 보이는 것이 텍스트 하나인데도 각각의 아이템을 위한 뷰를 별도로 만들어야 할까요?
한 아이템이 텍스트 하나인 경우를 위해 좀 더 간단한 방식을 사용할 수 있습니다.
2. 스피너 만들기
(1) XML 레이아웃
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity">
<Spinner
android:id="@+id/spinner"
android:layout_width="343dp"
android:layout_height="42dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.493"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="선택 : "
android:textSize="40sp"
app:layout_constraintBottom_toTopOf="@+id/spinner"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
(2) MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
String[] items = {"소녀시대", "소녀시대2", "소녀시대3", "소녀시대4"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView);
Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, items
);
// 드롭다운 클릭 시 선택 창
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// 스피너에 어댑터 설정
spinner.setAdapter(adapter);
// 스피너에서 선택 했을 경우 이벤트 처리
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
textView.setText(items[position]);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
textView.setText("선택 : ");
}
});
}
}
※ 스피너는 이미 선택된 아이템이 보이는 뷰와 아이템을 선택하기 위해 보이는 뷰가 서로 다릅니다. 따라서 두 개의 뷰가 있어야 합니다.
> setDropDownResource : 아이템을 선택하기 위해 보이는 뷰
> setOnItemSelectedListener : 이미 선택된 아이템이 보이는 뷰
'Android' 카테고리의 다른 글
[Android] 안드로이드 : 화면 구성과 화면 간 전환 (0) | 2019.12.05 |
---|---|
[Android] 안드로이드 : 그리드뷰 사용하기 (0) | 2019.12.04 |
[Android] 안드로이드 : 리스트뷰(ListView) 만들기 (2) | 2019.12.03 |
[Android] 안드로이드 : 나인패치 이미지 적용하기 (0) | 2019.12.01 |
[Android] 안드로이드 : 알림 대화상자 만들기 (0) | 2019.12.01 |
댓글