Android 下拉弹出框Spinner
在Android实现如Web页面上的下拉弹出框,不用PopupWindow,不用Dialog。使用Android原生控件Spinner轻松搞定。
首先XML布局
android:spinnerMode="dropdown"为弹出框的格式,dropdown为下拉弹出框,dialog为普通弹出框。android:layout_weight为我自己项目里面的宽度而已,可以忽略。android:overlapAnchor="false"最总要,为false表示紧挨Spinner,但不会挡住Spinner。如上图
<Spinner
android:overlapAnchor="false"
android:background="@null"
android:id="@+id/publish_type"
android:layout_width="0dp"
android:layout_weight="4"
android:spinnerMode="dropdown"
android:layout_height="wrap_content"/>
在代码中实际调用
string_type:是我自己存储的要弹出显示的内容List,大家可以自己发挥。
/**
* 视频分类
*/
private void initSpinnerType(){
//声明一个下拉列表的数组适配器
ArrayAdapter<String> starAdapter = new ArrayAdapter<String>(this,R.layout.video_type_item_select,string_type);
//设置数组适配器的布局样式
starAdapter.setDropDownViewResource(R.layout.video_type_item_dropdown);
//从布局文件中获取名叫sp_dialog的下拉框
//设置下拉框的标题,不设置就没有难看的标题了
publish_type.setPrompt("请选择视频分类");
//设置下拉框的数组适配器
publish_type.setAdapter(starAdapter);
//设置下拉框默认的显示第一项
publish_type.setSelection(0);
//给下拉框设置选择监听器,一旦用户选中某一项,就触发监听器的onItemSelected方法
publish_type.setOnItemSelectedListener(new MySelectedTypeListener());
}
class MySelectedTypeListener implements AdapterView.OnItemSelectedListener{
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
G.look("视频分类选择的是:"+adapterView.getSelectedItem());
chooseType = videoTypeBeans.get(i).id;
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
}
代码中使用的Spinner布局
video_type_item_select.xml,这是选中时,item的样式
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="@android:color/holo_blue_dark"
android:textSize="14sp"
android:textColor="@android:color/holo_red_light"
android:gravity="center"/>
video_type_item_dropdown.xml,这是弹出来的每一项item布局
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="45dp"
android:textColor="@android:color/black"
android:textSize="14sp"
android:gravity="center"/>