如何自定义Spinners的上下文菜单? 我已经对选择器视图(http://i.stack.imgur.com/uJzYP.png)进行了自定义,但不知道如何对内容菜单执行此操作。
例如选择不同的颜色,圆角,更大的字体等。
现在看起来像是:http://i.stack.imgur.com/jnH31.png
片段的布局:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@color/white"
tools:context="tenkol.design.com.imbrecords.FragmentEditProfile">
.....
<Spinner
android:id="@+id/spinner_countries"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/editText_edit_user_email"
android:layout_marginTop="12dp"
android:layout_centerHorizontal="true"
android:drawSelectorOnTop="true"
android:popupBackground="@color/blue"
style="@style/spinner_style"
/>
.....
</RelativeLayout>
@风格/ spinner_style :
<style name="spinner_style">
<item name="android:background">@drawable/spinner_bg</item>
<item name="android:layout_marginLeft">3dp</item>
<item name="android:layout_marginRight">3dp</item>
<item name="android:layout_marginBottom">10dp</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingTop">5dp</item>
<item name="android:paddingBottom">5dp</item>
</style>
@绘制/ spinner_bg :
<?xml version="1.0" encoding="utf-8"?>
<item>
<layer-list>
<item>
<shape>
<gradient android:angle="90" android:endColor="#ffffff" android:startColor="#ffffff" android:type="linear" />
<stroke android:width="1dp" android:color="@color/blue" />
<corners android:radius="5dp" />
<padding android:bottom="3dp" android:left="3dp" android:right="10dp" android:top="3dp" />
</shape>
</item>
<item>
<bitmap android:gravity="center_vertical|right" android:src="@drawable/spinner" />
</item>
</layer-list>
</item>
我为此微调器提供了自定义适配器:
class SpinAdapter extends ArrayAdapter<DataCountry>{
private Context context;
private List<DataCountry> values;
public SpinAdapter(Context context, int textViewResourceId,
List<DataCountry> values) {
super(context, textViewResourceId, values);
this.context = context;
this.values = values;
}
public int getCount(){
return values.size();
}
public DataCountry getItem(int position){
return values.get(position);
}
public long getItemId(int position){
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
View row = inflater.inflate(R.layout.spinner_layout_row, parent, false);
TextView countryName = (TextView)row.findViewById(R.id.spinner_row);
countryName.setText(context.getString(R.string.edit_user_country));
countryName.setTextSize(TypedValue.COMPLEX_UNIT_PX, context.getResources().getDimension(R.dimen.abc_text_size_title_material_toolbar));
countryName.setTextColor(context.getResources().getColorStateList(R.color.deep_blue));
return row;
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
TextView label = new TextView(context);
label.setTextColor(Color.BLACK);
label.setText(values.get(position).getName());
return label;
}
}
所以我重复一下这个问题:如何为微调器进行自定义设计? (圆角,更大的字体,选择器,可能是项目之间的分隔线)
感谢您的帮助。
答案 0 :(得分:0)
如果我理解你的问题,你只需要为你的项目创建单独的布局,然后通过这样的调用为你的微调器创建适配器:
mAdapter = new ArrayAdapter(context, R.layout.your_spinner_item_layout, data);
答案 1 :(得分:0)
使用此代码更新getDropDownView()
并创建微调器项目的自定义布局
@Override
public View getDropDownView(int position, View convertView,ViewGroup parent) {
View row= View.inflate(mContext,R.layout.spinner_item_list, null);
TextView label=(TextView)row.findViewById(R.id.textView);
label.setText(values.get(position).getName());
label.setTextSize(TypedValue.COMPLEX_UNIT_PX, context.getResources().getDimension(R.dimen.abc_text_size_title_material_toolbar));
label.setTextColor(context.getResources().getColorStateList(R.color.deep_blue));
return row;
}
答案 2 :(得分:0)
getView()和getDropDownView()对应于两种视图类型。 getView()是spinner元素中的选定视图,getDropDownView()是展开列表中的行。使用与普通ListView适配器中使用的相同模式的自定义视图调整getDropDownView()。制作自定义XML视图,对其进行充气,使其饱和,返回等等。