spinner 下拉列表

      实现spinner下拉列表的demo。

demo:下载地址


MainAvtivity.java:

package fk.androiddemo_017;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

import java.util.ArrayList;
import java.util.List;

//1,布局文件中声明
//2,values/strings中声明数据源数组(spinner2不需要)
//3,创建ArrayAdapter对象
//4,得到spinner对象,设置数据
//5,设置监听器
public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener {
    Spinner spinner;
    Spinner spinner2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        spinner=(Spinner)findViewById(R.id.spinner);
        spinner2=(Spinner)findViewById(R.id.spinner2);

        //用createFromResource创建一个ArrayAdapter<>对象(上下文,数据源,未展开spinner的布局)
        ArrayAdapter<CharSequence> adapter= ArrayAdapter.createFromResource(
                this, R.array.planets_array, android.R.layout.simple_spinner_item);
        //设置spinner展开后每一条item的布局
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //spinner标题
        spinner.setPrompt("行星");
        //添加适配器
        spinner.setAdapter(adapter);
        //设置监听器
        spinner.setOnItemSelectedListener(this);

        //这个spinner的数据采用代码内加载
        List<String> list=new ArrayList<>();
        list.add("bobo");
        list.add("lili");
        //(上下文,展开item每一条目的布局,条目ID,数据源)
        ArrayAdapter adapter2=new ArrayAdapter(
                this,R.layout.item,R.id.textViewId,list);
        spinner2.setAdapter(adapter2);
        spinner2.setPrompt("名字");
    }

    @Override
    //注意创建spinner时会默认选中item0,即第一个item,并且会执行这条语句
    //只有当选择的子条目与现在的子条目不同时才会调用
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        String selected=parent.getItemAtPosition(position).toString();
        System.out.println(selected);
    }

    @Override
    //没有选中时调用,实际上根本不会被调用
    public void onNothingSelected(AdapterView<?> parent) {
        System.out.println("Nothing selected");
    }
}

布局文件:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <!--下面一句确定整个打开的spinner样式-->
    <Spinner android:spinnerMode="dialog"
        android:id="@+id/spinner"
        android:layout_marginTop="25dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <Spinner
        android:spinnerMode="dialog"
        android:id="@+id/spinner2"
        android:layout_marginTop="25dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

子条目布局文件:

<?xml version="1.0" encoding="utf-8"?>
<!--用于spinner2-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textViewId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

strings.xml 常量:

<resources>
    <string name="app_name">AndroidDemo_017</string>

    <!--为spinner提供数据源-->
    <string-array name="planets_array">
        <item>Earth</item>
        <item>Mars</item>
        <item>Venus</item>
        <item>Saturn</item>
        <item>Uranus</item>
    </string-array>

</resources>

运行截图:



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spinner (下列表) 是一种常见的控件,用于显示可选项列表并允许用户从中选择一个选项。Spinner 默认的样式是系统定义的,但我们可以通过自定义来改变其外观和交互方式。 首先,我们可以通过定义一个新的样式来改变 Spinner 的外观。我们可以使用 XML 文件来定义新的样式,例如: ``` <style name="CustomSpinnerStyle" parent="@android:style/Widget.Spinner"> <item name="android:background">@drawable/custom_spinner_background</item> <item name="android:paddingLeft">8dp</item> <item name="android:paddingRight">8dp</item> </style> ``` 在这个样式中,我们指定了一个自定义的背景和左右的内边距。你可以根据自己的需求来定义其他属性,如文本颜色、字体大小等。 接下来,我们需要将定义的样式应用到 Spinner 控件上。我们可以在布局文件中使用 `style` 属性来指定样式: ``` <Spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@style/CustomSpinnerStyle" /> ``` 通过这样的设置,Spinner 将会应用我们定义的自定义样式。 除了外观,我们还可以自定义 Spinner 的行为和交互方式。例如,我们可以使用 `setOnItemSelectedListener` 来监听用户选择的事件: ``` Spinner spinner = findViewById(R.id.spinner); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String selectedOption = parent.getItemAtPosition(position).toString(); Toast.makeText(getApplicationContext(), "你选择了:" + selectedOption, Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); ``` 通过这个监听器,我们可以在用户选择一个选项时触发自定义的操作,比如显示一个 Toast 提示用户选择的选项。 通过上述方式,我们可以自定义 Spinner 的外观和行为,使其更符合我们应用的需求。当然,还有其他更多的方式可以对 Spinner 进行自定义,这里只是简单介绍了一些常见的方法。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值