HorizontalPicker

介绍:

一个横向的单选控件,选项可以是文字或者图标+文字,支持滑动选择。

运行效果:

使用说明:

Gradle 依赖

在项目的build.gradle文件中添加:

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

添加依赖:

dependencies {
            compile 'com.github.GoodieBag:HorizontalPicker:v1.0'
    }

XML :

<com.goodiebag.horizontalpicker.HorizontalPicker
            android:id="@+id/hpicker"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:textSize="18sp"
            app:itemMargin="5dp"
            app:itemHeight="40dp"
            app:itemWidth="40dp"
            app:backgroundSelector="@drawable/selector_background_example"
            app:textColorSelector="@color/selector_text_view"/>

ps: itemWidth 和 itemHeight 并不是必须的。如果忽略将默认为WRAP_CONTENT。

textColorSelector只有在item为textItem的时候可用。

Java :

 //If your picker needs to have text as items :  
 HorizontalPicker hpText = (HorizontalPicker) findViewById(R.id.picker);
 List<HorizontalPicker.PickerItem> textItems = new ArrayList<>();
        for(int i=1;i<=4;i++){
            textItems.add(new HorizontalPicker.TextItem("S"+i));
        }
  hpText.setItems(textItems,3); //3 here signifies the default selected item. Use : hpText.setItems(textItems) if none of the items are selected by default.
 //If your picker takes images as items : 
HorizontalPicker hpImage = (HorizontalPicker) findViewById(R.id.hpImage);
List<HorizontalPicker.PickerItem> imageItems = new ArrayList<>();
imageItems.add(new HorizontalPicker.DrawableItem(R.drawable.example));
imageItems.add(new HorizontalPicker.DrawableItem(R.drawable.example2));
hpImage.setItems(imageItems);

可以使用hpText.setSelectedIndex(index)手动选择一个item。

Listeners :

监听item选择的变化

HorizontalPicker.OnSelectionChangeListener listener = new HorizontalPicker.OnSelectionChangeListener() {
            @Override
            public void onItemSelect(HorizontalPicker picker, int index) {
                HorizontalPicker.PickerItem selected = picker.getSelectedItem();
                Toast.makeText(MainActivity.this, selected.hasDrawable() ? "Item at " + (picker.getSelectedIndex() + 1) + " is selected" : selected.getText() + " is selected", Toast.LENGTH_SHORT).show();
            }
hpText.setChangeListener(listener);

滑动

HPslide.gif

已知问题 :

当HorizontalPicker在一个HorizontalScrollView中的时候,滑动选择操作不是预期的效果。

已下载
0