UI系列教程第七课:自定义spinner下拉框实现的实现
说道android下拉框spineer,框架中虽有现成的控件,但实际效果可能并不是我们所需要的那种,如下图:
其实我们更需要的是像WEB那种风格,如图所示:
其实实现也很简单,就是自定义个popwindow就可以了
下面贴上代码片段:
public class SpinerPopWindow extends PopupWindow implements OnItemClickListener{
private Context mContext;
private ListView mListView;
private NormalSpinerAdapter mAdapter;
private IOnItemSelectListener mItemSelectListener;
public SpinerPopWindow(Context context)
{
super(context);
mContext = context;
init();
}
public void setItemListener(IOnItemSelectListener listener){
mItemSelectListener = listener;
}
private void init()
{
View view = LayoutInflater.from(mContext).inflate(R.layout.spiner_window_layout, null);
setContentView(view);
setWidth(LayoutParams.WRAP_CONTENT);
setHeight(LayoutParams.WRAP_CONTENT);
setFocusable(true);
ColorDrawable dw = new ColorDrawable(0x00);
setBackgroundDrawable(dw);
mListView = (ListView) view.findViewById(R.id.listview);
mAdapter = new NormalSpinerAdapter(mContext);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(this);
}
public void refreshData(List<String> list, int selIndex)
{
if (list != null && selIndex != -1)
{
mAdapter.refreshData(list, selIndex);
}
}
@Override
public void onItemClick(AdapterView<?> arg0, View view, int pos, long arg3) {
dismiss();
if (mItemSelectListener != null){
mItemSelectListener.onItemClick(pos);
}
}
}
主界面调用代码:
public class SpinerWindowDemoActivity extends Activity implements OnClickListener, AbstractSpinerAdapter.IOnItemSelectListener{
/** Called when the activity is first created. */
private View mRootView;
private TextView mTView;
private ImageButton mBtnDropDown;
private List<String> nameList = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceStat