본문 바로가기
Android

안드로이드 스피너(Spinner)를 만들어보자.

by 일용직 코딩노동자 2020. 2. 17.
728x90
반응형

버튼을 누를시 밑으로 리스트가 열리는 스피너에 대해서 해보겠습니다.

 

<?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"
    tools:context=".MainActivity">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:dropDownWidth="200dp"
        android:spinnerMode="dropdown">
    </Spinner>

</LinearLayout>

XML코드를 정의해주시구요.

spinnerMode에서 dropdown을 하시면 밑으로 열리는 스피너가 되구요.

dialog를 선택하시면 다이얼로그 창이 뜨는 스피너가 됩니다.

상황에 맞게 골라서 쓰시면 될거같습니다.

 

그리고 스피너 속성중에 dropDownWidth가 있는데 이 속성은 스피너를 터치했을때 열리는 메뉴들의 가로폭을 나타냅니다.

 

values - array.xml안에 이런식으로 string-array를 정의해주고 저는 일단 name을 test로 정의해줬습니다.

 

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;

public class MainActivity extends AppCompatActivity {

    Spinner spinner;

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

        spinner = findViewById(R.id.spinner);

        ArrayAdapter monthAdapter = ArrayAdapter.createFromResource(this, R.array.test, android.R.layout.simple_spinner_dropdown_item);
        //R.array.test는 저희가 정의해놓은 1월~12월 / android.R.layout.simple_spinner_dropdown_item은 기본으로 제공해주는 형식입니다.
        monthAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(monthAdapter); //어댑터에 연결해줍니다.


        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            } //이 오버라이드 메소드에서 position은 몇번째 값이 클릭됬는지 알 수 있습니다.
            //getItemAtPosition(position)를 통해서 해당 값을 받아올수있습니다.

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

메인에서 간단하게 정의를 해주었습니다. 

주석을 참고하시면서 해보시면 쉽게 해 볼수 있습니다.

 

 

궁금하신 사항은 댓글달아주세요.

728x90
반응형

댓글