【Android开发--新手必看篇】Spinner 下拉框

Android笔记

​ ——各类控件的使用(控件)-下拉框
若对该知识点有更多想了解的,欢迎私信博主~~

下拉框:Spinner

属性:
XML属性 说明
layout_width 布局宽度
layout_height 布局高度
background 背景
entries 使用数组资源设置该下拉列表框的列表项
paddingHorizontal 下拉框内填充距离
popupBackground 弹出背景
spinnerMode 设置下拉框弹出位置(dropdown 显示框下面显示;dialog 下拉列表弹出形式)
注:有的手机设置下拉框弹出位置可能出现一种情况:下拉框遮挡住了Spinner的显示框,将android:overlapAnchor=”false” 。 这个属性默认是true。改为false即可。
填充数据:
  1. 方法一:使用entries填充

    1. 建立array数组(res/values)

      <?xml version="1.0" encoding="utf-8"?>
      <resources>
          <string-array name="custom">
              <item>按时间收费</item>
              <item>按次数收费</item>
          </string-array>
      </resources>
      
    2. XML文件中引用

      <Spinner
              android:id="@+id/sp"
              android:layout_width="400dp"
              android:layout_height="52dp"
              android:background="#ccc"
              android:entries="@array/custom"
              android:paddingHorizontal="10dp"
              android:popupBackground="#de1b1b">
      
          </Spinner>
      
  2. 方法二:主代码中添加

    1. ​ 设置Spinner单个文本框的样式

      <?xml version="1.0" encoding="utf-8"?>
      
      <TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:textSize="30sp"
          android:singleLine="true"
          android:textColor="#4552dc"
          android:background="#c91d1d"
          android:gravity="right" //文字在文本框内居右
          android:layout_gravity="center"//文本框在下拉框内居中
          />
      
    2. 主代码书写下拉框适配器

      	Spinner spinner;
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main26);
              //绑定控件
              spinner=findViewById(R.id.sp);
              //建立下拉选项
              String[] array = {"按时间收费", "按次数收费"};
              //书写适配器
              ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, R.layout.spinner, array);
              //下拉框赋适配器
              spinner.setAdapter(arrayAdapter);
          }
      
高级方法:选项更改时触发
	Spinner spinner;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main26);
        //绑定控件
        spinner=findViewById(R.id.sp);

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            //adapterView就是父控件spinner
            //view就是spinner内填充的textview,id=@android:id/text1
            //position是值所在数组的位置
            //id是值所在行的位置,一般来说与positin一致
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(Main26Activity.this, "选项发生改变", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {
            }
        });
    }
注:更改选项的方法不是setOnItemClickListener,否则会报‘java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner.’
备注:一些常用的监听。

RadioGroup-->group.setOnCheckedChangeListener ->new OnCheckedChangeListener()->onCheckedChanged 
CheckBox-->   setOnCheckedChangeListener
上面虽然名字一样,但是包是不一样的。

GridView setOnItemClickListener.  因为GridView 就是继承了listView 的,所以两个是相同的。
listView 是setOnItemClickListener

Spinner-->  sp_province.setOnItemSelectedListener->new OnItemSelectedListener()-onItemSelected

你可能感兴趣的:(【Android开发--新手必看篇】Spinner 下拉框)