开发中难免有各种需求,近期项目中需要自定义下拉框的使用。实现效果如图,展开状态箭头向上,收起的时候箭头向下,选中状态选中条目颜色可变,可设置下拉框高度。效果如下
自定义CustomSpinner.java
public class CustomSpinner extends LinearLayout{ private View view; private TextView tv_name; private ImageView ib; //界面控件 private ImageView spinner; //构造qq号用到的集合 private List<String> list = new ArrayList<String>(); //布局加载器 //自定义适配器 private MyAdapter mAdapter; //PopupWindow private PopupWindow pop; //是否显示PopupWindow,默认不显示 private boolean isPopShow = true; private ListView listView; private LayoutInflater mInflater; private OnItemSelectedListenerSpinner onItemSelectedListener; private int heiht; private int postion = 0; public CustomSpinner(Context context) { super(context); initView(context); } public CustomSpinner(Context context, @Nullable AttributeSet attrs) { super(context, attrs); initView(context); } public CustomSpinner(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context); } public CustomSpinner(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); initView(context); } private void initView(final Context context) { mInflater = LayoutInflater.from(context); view = mInflater.inflate(R.layout.layout_customspinner, null); mAdapter = new MyAdapter(); tv_name = (TextView) view.findViewById(R.id.et_name); ib = (ImageView) view.findViewById(R.id.spinner); tv_name.setOnClickListener(new OnClickListener() { @Override