Android原生 Spinner下拉选择框 使用中遇到的问题和使用技巧
问题一:
下拉框遮挡Spinner显示框
解决办法:
android:spinnerMode=”dropdown”
该行代码就是设置下拉框弹出位置的属性,分为:dropdown(显示框下面显示)和dialog(下拉列表弹出形式)。
有的手机即使这样设置后取到了一定的效果。但是会出现一种情况:下拉框遮挡住了Spinner的显示框,这是因为有一个属性:
android:overlapAnchor=”false” 。
这个属性默认是true。改为false即可。但是不知道为什么这个属性在代码提示中是没有的。所以记录下来。希望对自己和各位有帮助。
问题二:
下拉框的宽度 和Spinner显示框的宽度不一致
解决办法:
暂无,网上无解决办法
问题三:
下拉框右侧的下拉箭头 在展示下拉框时,无法变成上拉手回箭头,也无法替换
解决办法:
暂无 网上没有找到解决办法
问题四:
spinner显示框的默认选择第一个选项,无法设置setHint();
解决办法:
暂无 也没发现有人找到解决办法
四种Android 自带的item使用样式
系统提供的样式如下
simple_spinner_dropdown_item(列表-间距较高比较好看)
simple_spinner_item(列表-间距紧凑不好看)
simple_list_item_checked(复选框-选中的有绿沟)
simple_list_item_single_choice (单选按钮)
综上所述: 如果对UI要求不严可以采用这个控件,否者还是自己写一个组合控件,替换掉它!
如果你不能用这个,又不想自己写组合控件,那就用这个吧,完美解决你的需求:
https://github.com/wolfking0608/nice-spinner
实例代码:
https://blog.csdn.net/duoduo_11011/article/details/78922804
源代码:
1.xml:
<?xml version="1.0" encoding="utf-8"?>
Activity:
public class CityEnterAppointActivity extends BaseMVPActivity implements View.OnClickListener { private static final String[] m = {"A型", "B型", "O型", "AB型", "其他"}; private RelativeLayout mTitleLayout; private ImageView mBackImage; private TextView mTitleText; private TextView mMenuText; private Spinner mSpinner; private ArrayAdapter adapter; private TextView view; @Override protected AbstractPresenter getPresenter() { return null; } @Override protected int getLayoutId() { return R.layout.page_activity_city_enter_appoint; } @Override protected void initView(@Nullable Bundle savedInstanceState) { mTitleLayout = (RelativeLayout) findViewById(R.id.title_layout); mBackImage = (ImageView) findViewById(R.id.back_image); mTitleText = (TextView) findViewById(R.id.title_text); mMenuText = (TextView) findViewById(R.id.menu_text); mSpinner = (Spinner) findViewById(R.id.spinner); view = (TextView) findViewById(R.id.spinnerText); } @Override protected void initTitle() { updateTitleColor(mTitleText); updateTitleLayoutColor(mTitleLayout); mTitleText.setText("市入指派"); mMenuText.setVisibility(View.GONE); } @Override protected void initData() { adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, m); //设置下拉列表的风格 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//simple_list_item_checked // int dp2px = Utils.dp2px(mContext, 40); // mSpinner.setDropDownVerticalOffset(dp2px); //这个是第二种方式,防止下拉框遮挡显示框的办法 //设置下拉选择框的背景 mSpinner.setPopupBackgroundDrawable(getResources().getDrawable(R.drawable.bg_txt_stroke_search)); //将adapter 添加到spinner中 mSpinner.setAdapter(adapter); //添加事件Spinner事件监听 mSpinner.setOnItemSelectedListener(new SpinnerSelectedListener()); } @Override protected void initEvent() { mBackImage.setOnClickListener(this); } @Override public void onClick(View v) { int id = v.getId(); if (id == R.id.back_image) { finish(); } } //使用数组形式操作 class SpinnerSelectedListener implements AdapterView.OnItemSelectedListener { public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { view.setText(m[arg2]); String str = (String) mSpinner.getItemAtPosition(arg2); ToastUtil.show(mContext, str); } public void onNothingSelected(AdapterView<?> arg0) { } }}
效果图:
更多相关文章
- Android之模仿微信登陆界面(一)
- Android播放视频(一)
- 搭建android编程环境 Eclipse+jdk+SDK
- Android入门之TabHost,TabWidget
- Android(安卓)中自定义控件和属性(attr.xml,declare-styleable,T
- android中wifi属性的介绍以及连接到指定的wifi
- android路径动画学习笔记
- Android五大布局介绍&属性设置大全
- Android(安卓)自定义View--ProgressBar篇(三)