我尝试创建一个 Spinner 来选择颜色。颜色应显示在 Spinner-header 中。这是一个屏幕截图:
但如您所见,颜色并没有填满我的 9-patch Spinner 背景(标题)。这是 9-patch 背景:
但我不明白为什么......
我实现了一个自定义 ArrayAdapter,这是代码:
spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new MyArrayAdapter(this, R.layout.spinner_row, R.id.textView1, items);
spinner.setAdapter(adapter);
private class MyArrayAdapter extends ArrayAdapter<String>{
public MyArrayAdapter(Context context, int resource, int textViewResourceId, String[] objects) {
super(context, resource, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getCustomViewSmall(position, convertView, parent);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
public View getCustomView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row = inflater.inflate(R.layout.spinner_row, parent, false);
View v = (View) row.findViewById(R.id.spinnerFrame);
v.setBackgroundColor(getColor(position));
return row;
}
public View getCustomViewSmall(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row = inflater.inflate(R.layout.spinner_row_small, parent, false);
row.setBackgroundColor(getColor(position));
return row;
}
private int getColor(int pos) {
switch(pos) {
case 0:
return colors[0]; // Blue
case 1:
return colors[1]; // Purple
case 2:
return colors[2]; // Orange
case 3:
return colors[3]; // Yellow
case 4:
return colors[4]; // Cyan
}
return colors[5];
}
}
这是布局的代码:
spinner_row_small.xml(即标题的布局):
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/spinnerFrameSmall"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</FrameLayout>
spinner_row.xml(行的布局):
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/FrameLayout1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="center"
android:background="@color/white" >
<FrameLayout
android:id="@+id/spinnerFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_marginBottom="1dp"
android:layout_marginTop="1dp" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</FrameLayout>
</FrameLayout>
和 main.xml:
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/textview"
android:spinnerMode="dropdown"
android:popupBackground="@drawable/spinner_background"
android:layout_marginBottom="30dp" />
如果有人可以帮助我,我会非常高兴。
此致!