Android spinner自定义下拉列表框


自定义下拉列表框:


下拉框提示信息,,prompt,,必须是dialog才可使用,添加下面style,,必须用字符串资源
style="@android:style/Widget.Spinner"
android:prompt="@string/tishi"

android:spinnerMode=“dialog或者dropdown”对话框/下拉框

1,在activity_main.xml文件中定义一个spinner。。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:background="@color/white"
    tools:context=".MainActivity">

    <Spinner
        android:layout_marginTop="30dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:spinnerMode="dropdown"
        android:id="@+id/spinner"
        android:padding="10dp"
        android:background="@drawable/selector_test"
   />
  
</FrameLayout>

2,在和activity_main.xml同级目录下,定义一个布局文件用来显示spinner的样式。

<?xml version="1.0" encoding="utf-8"?>

    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="18sp"
        android:paddingLeft="10dp"
        android:textColor="@color/blue"

        />

3,在和activity_main.xml同级目录下,定义一个布局文件用来显示spinner下拉列表框的样式。

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/text2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:textSize="18sp"
    android:paddingLeft="10dp"
    android:textColor="@color/red"
    android:background="@drawable/selector_spinner" //用了一个选择器,当被点击时样式和不被点击时样式不同
    android:layout_marginTop="5dp"
    android:padding="10dp"
/>

4,在java文件中定义

package com.example.syx.spinner;

import android.annotation.TargetApi;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity{

    private Spinner spinner;
    private ArrayAdapter<String> adapter;

    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner =(Spinner)findViewById(R.id.spinner);

//定义字符串用来显示下拉框的信息
        String[] arr=new String[]{"山东","江苏","浙江","河北"};
        //适配器,第一个参数是当前类,,,第二个参数是定义过的spinner的布局样式(也就是第二步骤里的),,第三个参数是字符串数组
        adapter = new ArrayAdapter(this,R.layout.spinner_item,arr);
//setDropDownViewResource(),设置下拉框的样式,,,也就是第三步骤里创建的样式。      

  adapter.setDropDownViewResource(R.layout.spinner_item_one);
  //设置下拉框的垂直偏移量
        spinner.setDropDownVerticalOffset(100);
        //spinner.setDropDownWidth(800);

        spinner.setAdapter(adapter);



//给spinner设置一个选择的事件监听,
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            //获取数据并转化为字符串
                String name = adapter.getItem((int) id).toString();
                //Toast提示选择的什么
                Toast.makeText(MainActivity.this, "你选择的是" + name, Toast.LENGTH_SHORT).show();

            }

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

            }
        });

    }


}

发布了57 篇原创文章 · 获赞 1 · 访问量 971

猜你喜欢

转载自blog.csdn.net/qq_45844648/article/details/105254901