개발환경 : Windows
개발언어 : Java
사용 라이브러리 : Databinding (데이터 결합 라이브러리)
안녕하세요 오늘은 Spinner에 대해 알아보겠습니다.
Spinner란?
저장된 리스트에서 드롭다운 메뉴를 통해 하나의 값을 선택할 수 있는 방법을 제공합니다.
이메일 주소 입력이나 핸드폰 번호 입력 시 자주 쓰이는 디자인입니다.
1. xml에 Spinner 생성
레이아웃 안에 Spinner를 생성해줍니다.
<Spinner
android:id="@+id/home_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"/>
2. value.xml에 Spinner에 넣을 리스트 생성
value.xml ->strings.xml에서 Spinner에 들어갈 리스트를 작성해줍니다.
<resources>
<string name="app_name">StarBooks</string>
<string-array name="spinner_array">
<item>최신순</item>
<item>좋아요순</item>
<item>리뷰순</item>
</string-array>
</resources>
3. Activity에서 어댑터 생성과 연결, 리스너 구현
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding= DataBindingUtil.setContentView(this, R.layout.activity_main);
//어댑터 생성
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinner_array,R.layout.spinner_layout);
//드롭다운뷰 연결
adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
//UI와 연결
binding.homeSpinner.setAdapter(adapter);
}
//Spinner Listener
public void spinnerListener() {
binding.homeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
//선택 시 작동기능
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 1:
break;
case 2:
break;
case 3:
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
** R.layout.spinner_layout과 R.layout.support_simple_spinner_dropdown_item은 안드로이드 스튜디오에서 기본으로 제공되는 레이아웃입니다.
** Spinner를 커스텀으로 적용하고 싶다면 R.layout.spinner_layout에서 원하시는대로 변경하시면 됩니다.
(저는 폰트 적용했습니다 ㅎㅁㅎ)
완성!

'Android' 카테고리의 다른 글
[Android-java] ScrollView 사용법 및 에러 해결 (0) | 2021.08.26 |
---|---|
[Android-java] 서버 통신 시 SocketTimeoutException 에러 (2) | 2021.08.25 |
[Android-Java] ViewPager와 TabLayout을 이용해 Custom 탭 만들기 (0) | 2021.03.18 |
[Android-Java] TabLayout 배경색 다르게 설정하기 (1) | 2021.03.18 |
[Android-java] Retrofit2 적용하기 / 로그인 구현 (3) | 2021.03.12 |