Android:更改下拉列表中微调器项的文本颜色
如何更改下拉列表中微调器项的文本颜色 当我这样做时(在选择的方法中): 或 或 或 它会更改微调器选定项的颜色,但不会在下拉列表中更改 这样做:Android:更改下拉列表中微调器项的文本颜色,android,drop-down-menu,colors,textview,spinner,Android,Drop Down Menu,Colors,Textview,Spinner,如何更改下拉列表中微调器项的文本颜色 当我这样做时(在选择的方法中): 或 或 或 它会更改微调器选定项的颜色,但不会在下拉列表中更改 这样做: ((TextView) spinner.getAdapter().getDropDownView(position, null, parent)).setTextColor(getResources().getColor(R.color.accent)); 不起作用。您可以通过设置适配器来实现此目标。您应该创建一个以简单方式显示项目的自定义适配器 。
((TextView) spinner.getAdapter().getDropDownView(position, null, parent)).setTextColor(getResources().getColor(R.color.accent));
不起作用。您可以通过设置适配器来实现此目标。您应该创建一个以简单方式显示项目的自定义适配器 。对于任何方法或变量,您都可以参考此 所以你要做的是:
- 创建自定义适配器
- 为适配器创建布局和java代码(您可以在google上轻松找到数千个示例)
- 从中添加代码(您需要根据自己的需要进行自定义)
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;
}
}
class HighLightArrayAdapter扩展了ArrayAdapter{
私有int mSelectedIndex=-1;
公共选举(内部职位){
mSelectedIndex=位置;
notifyDataSetChanged();
}
公共HighLightArrayAdapter(上下文上下文、int资源、CharSequence[]对象){
超级(上下文、资源、对象);
}
@凌驾
公共视图getDropDownView(int位置、视图转换视图、视图组父视图){
View itemView=super.getDropDownView(位置、转换视图、父级);
如果(位置==mSelectedIndex){
setBackgroundColor(Color.rgb(56184226));
}否则{
setBackgroundColor(Color.TRANSPARENT);
}
返回项目视图;
}
}
PS:
由于setSelection
方法不是本机方法,因此需要从活动中的OnItemSelectedListener
调用它
希望这对您有所帮助。您可以通过设置适配器来实现此目标。您应该创建一个自定义适配器,以简单的方式显示您的项目 。对于任何方法或变量,您都可以参考此 所以你要做的是:
- 创建自定义适配器
- 为适配器创建布局和java代码(您可以在google上轻松找到数千个示例)
- 从中添加代码(您需要根据自己的需要进行自定义)
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;
}
}
class HighLightArrayAdapter扩展了ArrayAdapter{
私有int mSelectedIndex=-1;
公共选举(内部职位){
mSelectedIndex=位置;
notifyDataSetChanged();
}
公共HighLightArrayAdapter(上下文上下文、int资源、CharSequence[]对象){
超级(上下文、资源、对象);
}
@凌驾
公共视图getDropDownView(int位置、视图转换视图、视图组父视图){
View itemView=super.getDropDownView(位置、转换视图、父级);
如果(位置==mSelectedIndex){
setBackgroundColor(Color.rgb(56184226));
}否则{
setBackgroundColor(Color.TRANSPARENT);
}
返回项目视图;
}
}
PS:
由于setSelection
方法不是本机方法,因此需要从活动中的OnItemSelectedListener
调用它
希望这能有所帮助。我认为在android中有两种方法可以实现这一点
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getDropDownView(position, convertView, parent);
textView.setTextColor(Color.BLUE);
return textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
textView.setTextColor(Color.RED);
return textView;
}
尝试覆盖getView(int-position、View-convertView、ViewGroup-parent)以根据需要自定义或设置TextView属性
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getDropDownView(position, convertView, parent);
textView.setTextColor(Color.BLUE);
return textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
textView.setTextColor(Color.RED);
return textView;
}
使用@Override ArrayAdapter方法的爬虫示例
spinnerList = new ArrayList<>();
spinnerList.add("Spinner item 1");
spinnerList.add("Spinner item 2");
spinnerList.add("Spinner item 3");
spinnerList.add("Spinner item 4");
spinnerList.add("Spinner item 5");
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,spinnerList){
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getDropDownView(position, convertView, parent);
textView.setTextColor(Color.BLUE);
return textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
textView.setTextColor(Color.RED);
return textView;
}
};
mSpinner.setAdapter(spinnerAdapter);
我认为有两种方法可以在android中实现这一点
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getDropDownView(position, convertView, parent);
textView.setTextColor(Color.BLUE);
return textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
textView.setTextColor(Color.RED);
return textView;
}
尝试覆盖getView(int-position、View-convertView、ViewGroup-parent)以根据需要自定义或设置TextView属性
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getDropDownView(position, convertView, parent);
textView.setTextColor(Color.BLUE);
return textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
textView.setTextColor(Color.RED);
return textView;
}
使用@Override ArrayAdapter方法的爬虫示例
spinnerList = new ArrayList<>();
spinnerList.add("Spinner item 1");
spinnerList.add("Spinner item 2");
spinnerList.add("Spinner item 3");
spinnerList.add("Spinner item 4");
spinnerList.add("Spinner item 5");
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,spinnerList){
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getDropDownView(position, convertView, parent);
textView.setTextColor(Color.BLUE);
return textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) super.getView(position, convertView, parent);
textView.setTextColor(Color.RED);
return textView;
}
};
mSpinner.setAdapter(spinnerAdapter);
作为最简单解决方案的粉丝,我希望在不使用自定义适配器的情况下动态更改颜色。但无论如何,谢谢你。@丹尼斯是的,我可以理解,但不幸的是,与基本布局不同的所有内容都可以实现,但需要一些代码。顺便说一句,创建适配器非常简单。几次以前我也认为这很烦人,我一直在尽力避免,但当我看到适配器的功能时,我改变了主意。相信我,它非常简单,功能强大。我习惯使用适配器,但和大多数开发人员一样,我非常懒。顺便说一句,这次你真的帮我找到了所需的动机。谢谢:)作为最简单解决方案的粉丝,我希望在不使用自定义适配器的情况下动态更改颜色。但无论如何,谢谢你。@丹尼斯是的,我可以理解,但不幸的是,与基本布局不同的所有内容都可以实现,但需要一些代码。顺便说一句,创建适配器非常简单。几次以前我也认为当我看到适配器的电源时,我改变了主意。相信我,这真的很简单,而且功能强大。我习惯于使用适配器,但和大多数开发人员一样