Spinner的用法介绍(兼容性问题)

今天碰到一个spinner在华为mate10上显示异常的问题。如下图
这里写图片描述

正常显示应该是这样的 如下图
这里写图片描述

回顾下spinner的用法

一.布局文件中配置


        <Spinner
            android:paddingRight="20dp"
            style="@style/spinner_bg"
            android:id="@+id/Setting_spinner"
            android:layout_width="80dp"
            android:layout_height="25dp"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="2dp" 

           />

样式是自定义的样式,更改了默认的背景。

二,添加一个下拉列表项的list,这里添加的项就是下拉列表的菜单项

list.add("5 秒");
        list.add("10 秒");
        list.add("30 秒");
        list.add("1分钟");
        list.add("5分钟");
        list.add("10分钟");
        list.add("30分钟");

三 为下拉列表定义一个适配器,这里就用到里前面定义的list。

final ArrayAdapter adapter = new ArrayAdapter(this,
R.layout.simple_spinner, list);
上面的simple_spinner也是一个自定义的布局文件,这样的目的是可以更改菜单项内容的字体颜色 大小等内容
simple_spinner的全部内容

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

四,为适配器设置下拉列表下拉时的菜单样式。

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

五 将适配器添加到下拉列表上

setting_spinner.setAdapter(adapter);

六 设置点击事件

setting_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                time_interval = (String) adapter.getItem(position);

            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

注意上面的第四部,simple_spinner_dropdown_item是系统自带的布局文件,咱们刚开始谈论的问题就是因为这个引起的,将这个布局里面的内容拷贝出来,自定义一个布局文件,将内容拷贝进去
如下

adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);

simple_spinner_dropdown_item的内容



<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerDropDownItemStyle"
    android:singleLine="true"
    android:layout_alignParentRight="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"/>

再次运行软件,发现问题搞定。。

猜你喜欢

转载自blog.csdn.net/csdn_mm/article/details/79713337