안드로이드 스피너뷰 색상 입히기

프로그래밍|2014.04.10 08:00
안드로이드 스피너뷰 색상 입히기




안드로이드 프로그래밍을 하다가 가끔식 스피너뷰를 사용을 할 때 있습니다. 스피너뷰에 색상을 입히고 싶은데 때로는 쉽지 않을 때도 있습니다. 저도 구글에서 이것 저것 찾아보는 도 중에 마음에 드는 부분이 있어서 제가 직접 적용을 해보고 테스트를 한 후에 여러분들께 알려드리는 것입니다.



spinner_text.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/sp_Text"
    style="?android:attr/spinnerItemStyle"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:background="#1DDB16"
    android:textColor="#000000"/>


소스는 크게 복잡하지도 않습니다. 소스를 아래에 공개를 해드리겠습니다. 충분히 하실 수 있으실거에요.



위는 스피너뷰 선택 시에 색상을 바뀌어지는 부분입니다. 만약에 글씨색을 바꾸고 싶으실 경우에는 android:textColor 이 부분을 바꾸어 주시면 되고 글씨 크기를 설정을 하실 때는 android:textSize를 원하는 값으로 주시면 됩니다. 아래는 메인 xml소스입니다.

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:background="#1DDB16"
        android:layout_marginTop="32dp" />
</RelativeLayout>

위의 소스는 메인 xml소스인데, 스피너뷰 하나만 지정해 놓고 나머지는 흰 백지상태입니다.
다른 기능을 추가를 할려니 일단 이 번에 하는 포스팅이 스피너뷰에 색상을 입히는 것이니 스피너뷰 하나만 나둔 것입니다.

MainActivity.java

package com.example.toast;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class MainActivity extends Activity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  String array[] = {"너구리", "다람쥐", "코알라"};
  ArrayAdapter<String> spinner_adapter = new ArrayAdapter<String>(this, R.layout.spinner_text, array);
  spinner_adapter.setDropDownViewResource(R.layout.spinner_text);
  Spinner spinner = (Spinner) findViewById(R.id.spinner1);
  spinner.setAdapter(spinner_adapter);
  spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
  @Override
  public void onItemSelected(AdapterView<?> parent, View view,
    int position, long id) {
   String msg = parent.getItemAtPosition(position).toString();
   
   Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();
   }
  @Override
   public void onNothingSelected(AdapterView<?> parent) {
    
   }
  });
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }
}


java 소스입니다. 스피너뷰의 값을 배열로 지정을 해둔 상태입니다. 동물 이름이 나와있는데 귀여운 동물이름으로 했어요. 스피너뷰를 선택을 할 때 마다 메세지가 나오도록 되어 있습니다. 너구리를 선택을 하면 너구리라는 글씨가 토스트창에 나오게 됩니다. 크게 어렵지도 않고 복잡하지도 않습니다.




여기서 조금 더 응용을 하시면 멋진 작품을 만들 수 있지 않을까 생각이 듭니다. 꾸준히 반복을 하다 보면 결국 자기 것이 되지 않을까요?

댓글(12)