是否可以自定义下拉菜单视图, 默认的下拉菜单视图有适配器视图。我想将该视图更改为我的自定义文本视图或类似内容。
是否可以自定义下拉菜单视图, 默认的下拉菜单视图有适配器视图。我想将该视图更改为我的自定义文本视图或类似内容。
public class MyAdapter extends ArrayAdapter<String>{
public MyAdapter(Context context, int textViewResourceId, String[] objects) {
super(context, textViewResourceId, objects);
}
@Override
public View getDropDownView(int position, View convertView,ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
public View getCustomView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater=getLayoutInflater();
View row=inflater.inflate(R.xml.row, parent, false);
TextView label=(TextView)row.findViewById(R.id.company);
label.setText(strings[position]);
TextView sub=(TextView)row.findViewById(R.id.sub);
sub.setText(subs[position]);
ImageView icon=(ImageView)row.findViewById(R.id.image);
icon.setImageResource(arr_images[position]);
return row;
}
}
Spinner mySpinner = (Spinner)findViewById(R.id.expandableImagesList);
mySpinner.setAdapter(new MyAdapter(NewEventActivity.this, R.xml.row, strings));
同时创建一个新的xml文件,并添加所有你想要在下拉框中包含的内容:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="3dip"
>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon"/>
<TextView
android:layout_toRightOf="@+id/image"
android:padding="3dip"
android:layout_marginTop="2dip"
android:textStyle="bold"
android:id="@+id/company"
android:text="CoderzHeaven"
android:layout_marginLeft="5dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:layout_toRightOf="@+id/image"
android:padding="2dip"
android:layout_marginLeft="5dip"
android:id="@+id/sub"
android:layout_below="@+id/company"
android:text="Heaven of all working codes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
ArrayAdapter
中的getDropDownView
方法来自定义下拉视图。@Override
public View getDropDownView(int position, View convertView, ViewGroup parent){
...
}
arrayAdapter.setDropDownViewResource(R.layout.your_layout);
这里的your_layout
是指只包含一个TextView
的XML文件。