如何在android中为选定值显示透明背景的微调器?

时间:2014-02-08 11:22:30

标签: android android-spinner dropdownlistfor

package com.android.example;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
public class SpinnerActivity extends Activity implements OnItemSelectedListener {

    private ICSAdapter mAdapter;
    private String[] mNameList = {"one","two","three" };
    Context context=this;
    Spinner room_type;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.spinner_activity_main);
        room_type = (Spinner) findViewById(R.id.ics_spinner);

        mAdapter = new ICSAdapter(context, mNameList);
         room_type.setAdapter(mAdapter);
         room_type.setOnItemSelectedListener(new OnItemSelectedListener() {
           @Override
                public void onItemSelected(AdapterView<?> Adapter, View view,
                        int position, long id) {
                        room_type.setSelection(position);
                        View selectedText = (View) Adapter.getChildAt(position);
                        if (selectedText != null) {
                            RelativeLayout real = (RelativeLayout) selectedText.findViewById(R.id.real);
                            TextView selected = (TextView) selectedText.findViewById(R.id.name_view);
                            selected.setText(mNameList[position].toUpperCase());
                            ((View) selected.getParent()).setBackgroundColor(Color.TRANSPARENT);
//                          real.setBackgroundColor(Color.TRANSPARENT);

                        }
                    }
                    @Override
                public void onNothingSelected(AdapterView<?> Adapter) {
                    // TODO Auto-generated method stub

                }
            });

    }

    public class ICSAdapter extends BaseAdapter {

        private LayoutInflater inflater;
        private Context context;
        String[] room_type;

        public ICSAdapter(Context context, String[] _accidentList) {
            this.room_type = _accidentList;
            this.context = context;

            inflater = (LayoutInflater) this.context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

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

        @Override
        public Object getItem(int position) {
            return room_type[position];
        }

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

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            convertView = inflater.inflate(R.layout.drop_down_view, null);
            holder = new ViewHolder();
            holder.spinnerText   = (TextView) convertView.findViewById(R.id.name_view);
            holder.spinnerText.setText(room_type[position]);
           return convertView;
        }


        public class ViewHolder {
            TextView spinnerText;
        }

    }

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }
}

activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:background="@drawable/bg"
    android:layout_gravity="center"
    >

<Spinner
        android:id="@+id/ics_spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/text3"
       />

</RelativeLayout>

dropdown.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/real"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#2D333C" >

    <TextView
        android:id="@+id/name_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_marginTop="5dp"
        android:gravity="center"
        android:text="324"
        android:textColor="@color/android:white"
        android:textSize="18sp" />

</RelativeLayout>

这里我使用默认微调器和一些背景图像。我有一个问题,当我点击微调器时,下拉列表将显示为白色背景。但不会显示原始颜色背景(android:background =“#2D333C”) 我正在使用透明颜色进行背景更改。如何解决此问题。当我点击下拉列表中的微调器时,我想显示给定的背景颜色。选择所选值后,背景将会透明。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

在可绘制文件夹中创建一个自定义文件。

<强> mybackground.xml

<?xml version="1.0" encoding="utf-8"?>
  <selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="false" android:drawable="@color/yourcolorName" />
  <item android:drawable="@android:color/transparent" />
</selector>

现在将此文件设置为您的Spinner。

<Spinner
    android:id="@+id/ics_spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/mybackground"
   />