在自定义微调器中获取包名称
Getting package name in custom spinner
我正在使用自定义微调器库,Material Spinner。我已将适配器设置为微调器,因为我希望 getDropDownView
中的字体大小不同。我有三个微调器,其中两个只显示包名。中间的微调器工作正常。
除了数组和宽度之外,所有三个微调器的一切都相同。那么为什么是中间的微调器。我不知道是什么问题。
这不是重复问题
提到的一个原因是 getView
方法应该被覆盖。如下所示,它已经完成了。我确实发现,在第一个和第三个微调器的情况下,没有调用 getView 方法或 getDropDownView 方法。我不明白为什么。
不需要 getItemCount
、getItemId
、getItem
方法。但是当我也有这些方法时,结果并没有改变。
MaterialSpinner msDay = (MaterialSpinner) getActivity().findViewById(R.id.fgenderage_ms_day);
List dayList = Arrays.asList(getResources().getStringArray(R.array.fgenderage_day));
msDay.setItems(new EnglishSpinnerAdapter(getActivity(), dayList));
MaterialSpinner msMonth = (MaterialSpinner) getActivity().findViewById(R.id.fgenderage_ms_month);
List monthList = Arrays.asList(getResources().getStringArray(R.array.fgenderage_month));
msMonth.setAdapter(new EnglishSpinnerAdapter(getActivity(), monthList));
MaterialSpinner msYear = (MaterialSpinner) getActivity().findViewById(R.id.fgenderage_ms_year);
List yearList = Arrays.asList(getResources().getStringArray(R.array.fgenderage_year));
msYear.setItems(new EnglishSpinnerAdapter(getActivity(), yearList));
适配器:
public class EnglishSpinnerAdapter extends MaterialSpinnerAdapter{
private List list;
private Context ctx;
public EnglishSpinnerAdapter(Context context, List items) {
super(context, items);
ctx = context;
list = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = new TextView(ctx);
textView.setText(list.get(position).toString());
return textView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView textView = new TextView(ctx);
textView.setText(list.get(position).toString());
return textView;
}
改变这个
msDay.setItem(new EnglishSpinnerAdapter(getActivity(), dayList));
至此
msDay.setAdapter(new EnglishSpinnerAdapter(getActivity(), dayList));
我正在使用自定义微调器库,Material Spinner。我已将适配器设置为微调器,因为我希望 getDropDownView
中的字体大小不同。我有三个微调器,其中两个只显示包名。中间的微调器工作正常。
除了数组和宽度之外,所有三个微调器的一切都相同。那么为什么是中间的微调器。我不知道是什么问题。
这不是重复问题
提到的一个原因是 getView
方法应该被覆盖。如下所示,它已经完成了。我确实发现,在第一个和第三个微调器的情况下,没有调用 getView 方法或 getDropDownView 方法。我不明白为什么。
getItemCount
、getItemId
、getItem
方法。但是当我也有这些方法时,结果并没有改变。
MaterialSpinner msDay = (MaterialSpinner) getActivity().findViewById(R.id.fgenderage_ms_day);
List dayList = Arrays.asList(getResources().getStringArray(R.array.fgenderage_day));
msDay.setItems(new EnglishSpinnerAdapter(getActivity(), dayList));
MaterialSpinner msMonth = (MaterialSpinner) getActivity().findViewById(R.id.fgenderage_ms_month);
List monthList = Arrays.asList(getResources().getStringArray(R.array.fgenderage_month));
msMonth.setAdapter(new EnglishSpinnerAdapter(getActivity(), monthList));
MaterialSpinner msYear = (MaterialSpinner) getActivity().findViewById(R.id.fgenderage_ms_year);
List yearList = Arrays.asList(getResources().getStringArray(R.array.fgenderage_year));
msYear.setItems(new EnglishSpinnerAdapter(getActivity(), yearList));
适配器:
public class EnglishSpinnerAdapter extends MaterialSpinnerAdapter{
private List list;
private Context ctx;
public EnglishSpinnerAdapter(Context context, List items) {
super(context, items);
ctx = context;
list = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = new TextView(ctx);
textView.setText(list.get(position).toString());
return textView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView textView = new TextView(ctx);
textView.setText(list.get(position).toString());
return textView;
}
改变这个
msDay.setItem(new EnglishSpinnerAdapter(getActivity(), dayList));
至此
msDay.setAdapter(new EnglishSpinnerAdapter(getActivity(), dayList));