下拉框遮挡Spinner显示框
解决办法:
android:spinnerMode=”dropdown”
该行代码就是设置下拉框弹出位置的属性,分为:dropdown(显示框下面显示)和dialog(下拉列表弹出形式)。
有的手机即使这样设置后取到了一定的效果。但是会出现一种情况:下拉框遮挡住了Spinner的显示框,这是因为有一个属性:
android:overlapAnchor=”false” 。
这个属性默认是true。改为false即可。但是不知道为什么这个属性在代码提示中是没有的。所以记录下来。希望对自己和各位有帮助。
下拉框的宽度 和Spinner显示框的宽度不一致
解决办法:
暂无,网上无解决办法
下拉框右侧的下拉箭头 在展示下拉框时,无法变成上拉手回箭头,也无法替换
解决办法:
暂无 网上没有找到解决办法
spinner显示框的默认选择第一个选项,无法设置setHint();
解决办法:
暂无 也没发现有人找到解决办法
系统提供的样式如下
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:
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) {
}
}
}
效果图: