一、简单使用
①布局
<LinearLayout
android:layout_width=
"fill_parent"
android:layout_height=
"fill_parent"
android:orientation=
"vertical"
>
<Spinner
android:id=
"@+id/spinner1"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
②代码
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner spinner = (Spinner) findViewById(R.id.spinner1);
spinner.setOnItemSelectedListener(
new
OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
String[] languages = getResources().getStringArray(R.array.languages);
Toast.makeText(MainActivity.
this
,
"你点击的是:"
+languages[pos], 2000).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback
}
});
}
③设置数据
1)android:entries="@array/languages"表示Spinner的数据集合是从资源数组languages中获取的,languages数组资源定义在values/arrays.xml中。
2)也可以代码设置
//设置数据
//未展开的样式 adapter = new ArrayAdapter<String>(getActivity(), R.layout.spinner_top, R.id.tv_shopname); //展开后的样式 adapter.setDropDownViewResource(R.layout.spinner_down);for (int i = 0; i < 10; i++) { adapter.add(“java”+i);}
spinner.setAdapter(adapter);
④、布局出不来查了好多资料可以这样写
//测量spinner的高度,方便设置偏移量 int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); spinner.measure(w, h); int height = spinner.getMeasuredHeight(); int width = spinner.getMeasuredWidth(); spinner.setDropDownVerticalOffset(height);
二、重要属性
1.entries: 直接在xml布局文件中绑定数据源(可以不设置,即可以在Activity中动态绑定)
2.两种显示形式,一种是下拉菜单,一种是弹出框,菜单显示形式是spinnerMode属性决定的:
android:spinnerMode=
"dropdown"
android:spinnerMode=
"dialog"