※ 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