Вам нужно создать собственный класс Java, расширяющий ArrayAdapter и применить там логику, чтобы изменить цвет текста.
public class SpinnerAdapter extends ArrayAdapter<String> {
private Context mContext;
private List<String> mStringList;
public SpinnerAdapter(@NonNull Context context, int resource, @NonNull List<String> spinnerItems) {
super(context, resource, spinnerItems);
mContext = context;
mStringList = spinnerItems;
}
@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
return spinnerView(position, convertView, parent);
}
@Override
public int getCount() {
return super.getCount();
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
return spinnerView(position, convertView, parent);
}
private View spinnerView(int position, View convertView, ViewGroup parent){
ViewHolder holder;
if (convertView == null){
holder = new ViewHolder();
// Your spinner dropdown item xml here
convertView = LayoutInflater.from(mContext). inflate(R.layout.spinner_dropdown_item, parent, false);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
//Custom logic here, example below
String matchDay = mStringList.get(position);
holder.mMatchday = convertView.findViewById(R.id.matchday);
holder.mDates = convertView.findViewById(R.id.spinner_dates);
holder.mMatchday.setText(matchDay);
return convertView;
}
private class ViewHolder {
private TextView mMatchday, mDates;
}
In Ur Activity
List<String> stringList= new ArrayList<>();
for (int i = 0; i < 20; i++){
stringList.add("String " + (i + 1));
}
SpinnerAdapter dataAdapter = new SpinnerAdapter(getContext(), R.layout.format_home_spinner, stringList);
mSpinner.setAdapter(dataAdapter);