Android spinner with underline appcompat

后端 未结 4 1499
小蘑菇
小蘑菇 2020-12-13 17:27

I am using a appcompat theme for my application. Need to know how i can show underline to spinner. It is just showing anchor. I tried setting up underline using android:back

4条回答
  •  南方客
    南方客 (楼主)
    2020-12-13 17:48

    This is hacky (and not perfect) way to change spinner and underline color in appcompat theme. Main point that I customized Android support library images and xml files to change color.

    1) go to support library package and copy 2 images (or download my custom from the bottom of this post)

    /your-app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.0/res/drawable-hdpi/abc_spinner_mtrl_am_alpha.9.png
    

    and

    /your-app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.0/res/drawable-hdpi/abc_textfield_default_mtrl_alpha.9.png
    

    2) Make a copy of those images

    3) Change color of abc_spinner_mtrl_am_alpha.9.png (warning: leave black borders as they are, it's for 9 patch)

    4) Change color of second bottom line of abc_textfield_default_mtrl_alpha.9.png (you can see in attached small image below)

    5) Save and move files to your project drawables

    6) Create bottom_line_color.xml drawable:

    
    
    
        
            
        
    
    

    7) Create spinner_bottom_line.xml

    
    
    
    
        
            
            
        
    
    
        
            
            
        
    
    
    
    

    P.S. I couldn't achieve same visual style as default spinner (visual changes shown below). If you start using this custom spinner theme you should use it in all project.

    So add to values/styles.xml

    
    

    And use it in application like this:

          
    

    Important: You should resize spinner and place to various drawables folders. You can find size in same path as I showed above. There are few popular sizes:

    drawables-mdpi   20x26
    
    drawables-hdpi   29x38
    
    drawables-xhdpi  38x50
    
    drawables-xxhdpi 74x98
    

    You can take my customized images from here:

    my_custom_abc_spinner_mtrl_am_alpha:

    my_custom_abc_textfield_default_mtrl_alpha:

    Spinner example is (xxhdpi), line is mdpi (because we don't need various lines in various drawable folders, so we can have only 1).

    Visual difference (from android studio xml preview window) is shown here:

    First line is my custom underline spinner, second is default Base.Widget.AppCompat.Spinner.Underlined

提交回复
热议问题