[Android] 超快速實現從下方滑出滾輪選單

※ NumberPicker

※ 下方滑出選單

※ 選擇器

※ Android-PickerView


廢話不多說,先看效果!!

● 實現方法

1. 引入

dependencies {
    compile 'com.contrarywind:Android-PickerView:3.2.5'
}

2. MainActivity.java中加入

    private void initOptionPicker() {

        pvOptions = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int options2, int options3, View v) {
                String tx = options1Items.get(options1) + options2Items.get(options1).get(options2);
                mBtnTxv.setText(tx);
            }
        }).setTitleText("請選擇") // 選擇器標題
                .setContentTextSize(20)//設定滾輪文字大小
                .setDividerColor(Color.GREEN)//設定分割線顏色
                .setSelectOptions(0, 1)//默認選中值
                .setBgColor(Color.BLACK)
                .setTitleBgColor(Color.DKGRAY)
                .setTitleColor(Color.LTGRAY)
                .setCancelColor(Color.YELLOW)
                .setSubmitColor(Color.YELLOW)
                .setCancelText("不選了")
                .setSubmitText("確定")
                .setTextColorCenter(Color.LTGRAY)
                .setBackgroundId(0x66000000) //設定外部遮罩顏色
                .build();

        pvOptions.setPicker(options1Items, options2Items);
    }

其中 

1. onOptionsSelect 內為點選確定後要做的事情

2. 中間可以看到有一大堆屬性可以自定義

3. 最後記得加上 pvOptions.setPicker(options1Items, options2Items);

完成,是不是超快速!!!!!

 

3. 完整代碼參考

● MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private ArrayList<String> options1Items = new ArrayList<>();
    private ArrayList<ArrayList<String>> options2Items = new ArrayList<>();

    private TextView mBtnTxv;

    private OptionsPickerView pvOptions;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initOptionData();
        initOptionPicker();

        mBtnTxv = (TextView) findViewById(R.id.btnTxv);
        mBtnTxv.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.btnTxv && pvOptions != null) {
            pvOptions.show(); // 從下方彈出選擇器
        }
    }

    private void initOptionData() {

        //選項1
        for (int i = 0; i < 3; i++) {
            options1Items.add("第" + String.valueOf(i) + "個");
        }

        //選項2
        ArrayList<String> options2Items_01 = new ArrayList<>();
        ArrayList<String> options2Items_02 = new ArrayList<>();
        ArrayList<String> options2Items_03 = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            options2Items_01.add("<" + String.valueOf(i) + ">");
            options2Items_02.add("+" + String.valueOf(i) + "+");
            options2Items_03.add("|" + String.valueOf(i) + "|");
        }
        options2Items.add(options2Items_01);
        options2Items.add(options2Items_02);
        options2Items.add(options2Items_03);
    }


    private void initOptionPicker() {

        pvOptions = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int options2, int options3, View v) {
                String tx = options1Items.get(options1) + options2Items.get(options1).get(options2);
                mBtnTxv.setText(tx);
            }
        }).setTitleText("請選擇") // 選擇器標題
                .setContentTextSize(20)//設定滾輪文字大小
                .setDividerColor(Color.GREEN)//設定分割線顏色
                .setSelectOptions(0, 1)//默認選中值
                .setBgColor(Color.BLACK)
                .setTitleBgColor(Color.DKGRAY)
                .setTitleColor(Color.LTGRAY)
                .setCancelColor(Color.YELLOW)
                .setSubmitColor(Color.YELLOW)
                .setCancelText("不選了")
                .setSubmitText("確定")
                .setTextColorCenter(Color.LTGRAY)
                .setBackgroundId(0x66000000) //設定外部遮罩顏色
                .build();

        pvOptions.setPicker(options1Items, options2Items);
    }
}

● activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.ystar.androidpickerview.MainActivity">

    <TextView
        android:id="@+id/btnTxv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="請點我!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

 

資料來源

https://github.com/Bigkoo/Android-PickerView