当前位置:  开发笔记 > Android > 正文

如何更改Spinner下拉项目的文本颜色?

如何解决《如何更改Spinner下拉项目的文本颜色?》经验,为你挑选了1个好方法。

我想将Spinner下拉项目的文本颜色更改为黑色.

我有一个自定义Spinner,列出了不同的语言.它有一个ImageView和一个TextView.微调器显示在带有白色文本的蓝色背景上,看起来很好.

问题是当它被点击时,下拉显示但文本几乎看不到,因为下拉的浅灰色和文本的白色.

这是Spinner的代码activity_main.xml:


这是spinner_row_layout.xml:




    

        

        
    

这里文本颜色设置为白色,因为当没有选择任何内容时我需要它是白色的.

这是以下代码styles.xml:


    

    

    

    

    

有没有人有任何建议怎么做?

编辑:在评论和答案的帮助下,我设法做到了.我认为它可以用XML完成...无论如何在java代码背后,这就是我所做的:

定义自定义适配器后,我们需要覆盖getDropDownView方法,该方法在单击微调器并显示下拉列表时触发.该getView方法也应该被覆盖,因此我们可以在Spinner未单击时处理默认颜色.换句话说,这是代码:

public class CustomSpinnerAdapter extends ArrayAdapter {
        public CustomSpinnerAdapter(Context context, int textViewResourceId, String[] objects, TypedArray image){
            super(context, textViewResourceId, objects);
        }

        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent){
            LayoutInflater inflater = getLayoutInflater();
            View row = inflater.inflate(R.layout.spinner_row_layout, parent, false);

            TextView label = (TextView) row.findViewById(R.id.language);
            label.setText(languages_list[position]);

            label.setTextColor(getResources().getColor(android.R.color.black));

            ImageView icon = (ImageView) row.findViewById(R.id.icon);
            icon.setImageDrawable(icons_list.getDrawable(position));

            return row;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent){
            LayoutInflater inflater = getLayoutInflater();
            View row = inflater.inflate(R.layout.spinner_row_layout, parent, false);

            TextView textView = (TextView) row.findViewById(R.id.language);
            textView.setText(languages_list[position]);
            textView.setTextColor(getResources().getColor(android.R.color.white));

            ImageView icon = (ImageView) row.findViewById(R.id.icon);
            icon.setImageDrawable(icons_list.getDrawable(position));

            return row;
        }
    }

请注意,TextViewin 的颜色getDropDownView设置为黑色,而在getView其中设置为白色.



1> flyingAssist..:

我做过那样的事,但是在 BaseAdapter

public View getDropDownView(int position, View convertView, ViewGroup parent) {
            View view = convertView;
            if (view == null) {
                view = inflater.inflate(R.layout.spinner_item, null);
            }

            TextView txtTestText = (TextView) view.findViewById(R.id.txtSpinnerRowText);
            txtTestText.setText(list.get(position).getText());
            if (getSelectedPosition() == position) {
                txtTestText.setTextColor(context.getResources().getColor(android.R.color.holo_blue_dark));
            } else {
                txtTestText.setTextColor(context.getResources().getColor(android.R.color.primary_text_light));
            }
            return view;
        }

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有