如何更改微调器项目的背景颜色

时间:2018-01-01 06:00:27

标签: android android-spinner

我使用this库进行微调器。我想从微调器中的列表中更改已选择项的颜色。我该怎么做?这就是我在微调器上填充数据的方式:

spinner1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    Cursor crs = database.rawQuery("SELECT * FROM "+ ItemsTable.TABLE_ZONE +" WHERE "+ ItemsTable.COLUMN_ZONE_ID +"<>"+ zone_id1
                            +" AND "+ ItemsTable.COLUMN_ZONE_ID +"<>"+ zone_id2 +" AND "+ ItemsTable.COLUMN_ZONE_ID +"<>"+ zone_id3 +"", null);
                    Integer[crs.getCount()];
                    List<Zone> listOfZones = new ArrayList<Zone>();

                    while(crs.moveToNext())
                    {
                        String title = crs.getString(crs.getColumnIndex("title"));
                        Integer title_id = crs.getInt(crs.getColumnIndex("id"));

                        listOfZones.add(new Zone(title_id, title));

                    }
                    crs.close();

                    ArrayAdapter<Zone> zoneadapter = new ArrayAdapter<Zone>(getActivity(),
                            android.R.layout.simple_dropdown_item_1line, listOfZones);
                    spinner1.setAdapter(zoneadapter);
                }
                return false;
            }
        });

在上面的代码中,我从列表中删除已经选中的项目,但我想更改已选择项目的背景颜色。

1 个答案:

答案 0 :(得分:1)

您可以通过为xml创建spinner layout文件来提供背景颜色。请按照以下步骤操作。

1)您需要在xml文件夹下创建一个layout文件。

2)创建包含一个显示项目名称的TextView的布局。

3)为主rootview布局提供背景颜色。例如android:background="@color/anycolor"

并在spinner适配器中绑定此布局。

这是自定义适配器:

public class CustomAdapter extends BaseAdapter {
Context context;
List<Zone> listOfZones;
LayoutInflater inflter;

public CustomAdapter(Context applicationContext,  List<Zone> listOfZones) {
    this.context = applicationContext;
    this.listOfZones = listOfZones;
    inflter = (LayoutInflater.from(applicationContext));
}

@Override
public int getCount() {
    return flags.length;
}

@Override
public Object getItem(int i) {
    return null;
}

@Override
public long getItemId(int i) {
    return 0;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    view = inflter.inflate(R.layout.your_layout_name, null);
    TextView names = (TextView) view.findViewById(R.id.textView);
    names.setText(listOfZones.get(i).yourObjectName);
    return view;
}}

并将此绑定到spinner,如下所示:

 CustomAdapter customAdapter=new CustomAdapter(getApplicationContext(),listOfZones);
 your_spinner.setAdapter(customAdapter);