어떻게 스피너 항목의 텍스트 색상 변경 내 드롭 다운 목록을?
내가 할 때 ( onItemSelected 메서드 내부 ) :
((TextView) view).setTextColor(getResources().getColor(R.color.accent));
또는
((TextView) spinner.getAdapter().getView(position, view, parent)).setTextColor(getResources().getColor(R.color.accent));
또는
((TextView) spinner.getChildAt(position)).setTextColor(getResources().getColor(R.color.accent));
또는
((TextView) spinner.getSelectedView()).setTextColor(getResources().getColor(R.color.accent));
스피너가 선택한 항목의 색상을 변경하지만 드롭 다운 목록 내부에서는 변경하지 않습니다.
그리고 이렇게 :
((TextView) spinner.getAdapter().getDropDownView(position, null, parent)).setTextColor(getResources().getColor(R.color.accent));
작동하지 않습니다.
어댑터를 설정하면이 목표를 달성 할 수 있습니다. 간단한 방법으로 항목을 표시하는 사용자 지정 어댑터를 만들어야합니다.
이것은 어댑터에 대한 공식 참조입니다 . 모든 메소드 또는 변수에 대해이를 참조 할 수 있습니다.
이 SO 링크에는 솔루션이 있습니다.
따라서해야 할 일은 다음과 같습니다.
어댑터
class HighLightArrayAdapter extends ArrayAdapter<CharSequence> {
private int mSelectedIndex = -1;
public void setSelection(int position) {
mSelectedIndex = position;
notifyDataSetChanged();
}
public HighLightArrayAdapter(Context context, int resource, CharSequence[] objects) {
super(context, resource, objects);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View itemView = super.getDropDownView(position, convertView, parent);
if (position == mSelectedIndex) {
itemView.setBackgroundColor(Color.rgb(56,184,226));
} else {
itemView.setBackgroundColor(Color.TRANSPARENT);
}
return itemView;
}
}
추신:
setSelection
메서드가 네이티브가 아니기 때문에 OnItemSelectedListener
액티비티 에서 호출해야합니다 .
도움이 되었기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다