How to change the Spinner font color?

后端 未结 8 1347
盖世英雄少女心
盖世英雄少女心 2020-12-01 06:34

I\'m having an issue with the Droid X phones where users say that the font color turns out to be white in the spinner, making it invisible unless the users highlight the ite

相关标签:
8条回答
  • 2020-12-01 07:20

    I'm going to use Spinner project sample from Android SDK for next code examples.


    Code:

    First, you need to create you custom adapter which will intercept the creation of views in drop down list:

    static class CustomArrayAdapter<T> extends ArrayAdapter<T>
    {
        public CustomArrayAdapter(Context ctx, T [] objects)
        {
            super(ctx, android.R.layout.simple_spinner_item, objects);
        }
    
        //other constructors
    
        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent)
        {
            View view = super.getView(position, convertView, parent);
    
            //we know that simple_spinner_item has android.R.id.text1 TextView:         
    
            /* if(isDroidX) {*/
                TextView text = (TextView)view.findViewById(android.R.id.text1);
                text.setTextColor(Color.RED);//choose your color :)         
            /*}*/
    
            return view;
    
        }
    }
    

    Then you create adapter in your code like this:

     String [] spin_arry = getResources().getStringArray(R.array.Planets);        
     this.mAdapter = new CustomArrayAdapter<CharSequence>(this, spin_arry);
    

    Explanation:

    Because CustomArrayAdapter knows that we use android's built-in layout resource, it also knows that text will be placed in TextView with id android.R.id.text1. That's why it can intercept the creation of views in drop down list and change text color to whatever color is needed.


    Screenshot:

    enter image description here

    0 讨论(0)
  • 2020-12-01 07:27

    Here is more appropriate way guys,

    First find the "simple_spinner_item.xml" file in your system, Follow the below path, C:\Users[username]\AppData\Local\Android\sdk\platforms[android-23]\data\res\layout

    Now copy the content of "simple_spinner_item.xml" file

    Second create the custom_spinner.xml file in your project res\layout folder

    and paste the copied content in recently created file

    Here is the sample:

    res\layout\custom_spinner.xml

    <?xml version="1.0" encoding="utf-8"?>
    <TextView android:textAlignment="inherit"
        android:ellipsize="marquee"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:singleLine="true"
        android:textColor="@color/dark_gray"
        style="?android:attr/spinnerItemStyle"
        android:id="@android:id/text1" xmlns:android="http://schemas.android.com/apk/res/android"/>
    

    Here is the set adapter code:

    Spinner ddlArea = (Spinner) findViewById(R.id.ddlArea);
    
    ddlArea.setAdapter(new ArrayAdapter<String>(this, R.layout.custom_spinner, areaList));
    

    Where areaList is the List

    Thanks, Ejaz Waquif

    0 讨论(0)
提交回复
热议问题