在自定义微调器中获取包名称

Getting package name in custom spinner

我正在使用自定义微调器库,Material Spinner。我已将适配器设置为微调器,因为我希望 getDropDownView 中的字体大小不同。我有三个微调器,其中两个只显示包名。中间的微调器工作正常。

除了数组和宽度之外,所有三个微调器的一切都相同。那么为什么是中间的微调器。我不知道是什么问题。

这不是重复问题

提到的一个原因是 getView 方法应该被覆盖。如下所示,它已经完成了。我确实发现,在第一个和第三个微调器的情况下,没有调用 getView 方法或 getDropDownView 方法。我不明白为什么。

不需要

getItemCountgetItemIdgetItem 方法。但是当我也有这些方法时,结果并没有改变。

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));