스피너 커스텀하기



java)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.example.gwon.blog_045;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Spinner;
 
import java.util.ArrayList;
import java.util.List;
 
public class MainActivity extends AppCompatActivity {
 
    //UI
    Spinner spinner1;
 
    //Adapter
    AdapterSpinner1 adapterSpinner1;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        //데이터
        List<String> data = new ArrayList<>();
        data.add("가짜 데이터 1"); data.add("가짜 데이터 2"); data.add("가짜 데이터 3"); data.add("가짜 데이터 4"); data.add("가짜 데이터 5");
        data.add("가짜 데이터 6"); data.add("가짜 데이터 7"); data.add("가짜 데이터 8"); data.add("가짜 데이터 9"); data.add("가짜 데이터 10");
 
        //UI생성
        spinner1 = (Spinner)findViewById(R.id.spinner1);
 
        //Adapter
        adapterSpinner1 = new AdapterSpinner1(this, data);
 
        //Adapter 적용
        spinner1.setAdapter(adapterSpinner1);
    }
}
 
cs



Adapter)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package com.example.gwon.blog_045;
 
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
 
import java.util.List;
 
/**
 * Created by gwon on 2016-12-03.
 */
 
public class AdapterSpinner1 extends BaseAdapter {
 
 
    Context context;
    List<String> data;
    LayoutInflater inflater;
 
 
    public AdapterSpinner1(Context context, List<String> data){
        this.context = context;
        this.data = data;
        inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
 
 
    @Override
    public int getCount() {
        if(data!=nullreturn data.size();
        else return 0;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView==null) {
            convertView = inflater.inflate(R.layout.spinner_spinner1_normal, parent, false);
        }
 
        if(data!=null){
            //데이터세팅
            String text = data.get(position);
            ((TextView)convertView.findViewById(R.id.spinnerText)).setText(text);
        }
 
        return convertView;
    }
 
    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        if(convertView==null){
            convertView = inflater.inflate(R.layout.spinner_spinner1_dropdown, parent, false);
        }
 
        //데이터세팅
        String text = data.get(position);
        ((TextView)convertView.findViewById(R.id.spinnerText)).setText(text);
 
        return convertView;
    }
 
    @Override
    public Object getItem(int position) {
        return data.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
}
 
 
cs



activity_main.xml)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    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="com.example.gwon.blog_045.MainActivity">
 
    <Spinner
        android:id="@+id/spinner1"
        android:background="@drawable/spinner_spinner1"
        android:layout_width="match_parent"
        android:layout_height="30dp" />
 
</RelativeLayout>
 
cs



spinner_spinner1_normal.xml)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="center_vertical"
    android:paddingLeft="13dp"
    android:paddingRight="13dp"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <ImageView
        android:src="@drawable/img_wifi_lock"
        android:layout_width="24dp"
        android:layout_height="24dp" />
 
    <TextView
        android:id="@+id/spinnerText"
        android:textSize="15sp"
        android:textColor="#000"
        android:alpha="0.87"
        android:paddingLeft="13dp"
        android:textColorHint="#1f000000"
        android:gravity="center"
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />
 
    <ImageView
        android:src="@drawable/img_arrow_down"
        android:scaleType="centerInside"
        android:layout_width="20dp"
        android:layout_height="match_parent" />
 
</LinearLayout>
 
 
cs



spinner_spinner1_dropdown.xml)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="center_vertical"
    android:padding="5dp"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <ImageView
        android:src="@drawable/img_wifi_lock"
        android:layout_width="24dp"
        android:layout_height="24dp" />
 
    <TextView
        android:id="@+id/spinnerText"
        android:textSize="15sp"
        android:textColor="#000"
        android:alpha="0.87"
        android:paddingLeft="13dp"
        android:textColorHint="#1f000000"
        android:gravity="center"
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />
 
</LinearLayout>
 
cs



drawable > spinner_spinner1,xml

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <stroke android:color="#c3cad1" android:width="1dp" />
            <corners android:radius="5dp" />
            <solid android:color="#fff" />
        </shape>
    </item>
</selector>
 
cs



결과

 


+ Recent posts