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

    技术2022-07-31  111

    Android笔记

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

    下拉框:Spinner

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

    方法一:使用entries填充

    建立array数组(res/values)

    <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="custom"> <item>按时间收费</item> <item>按次数收费</item> </string-array> </resources>

    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>

    方法二:主代码中添加

    ​ 设置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"//文本框在下拉框内居中 />

    主代码书写下拉框适配器

    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
    Processed: 0.010, SQL: 9