ios风格的分段控件,类似 UISegmentedControl

Related tags

UI/UX segmentedview
Overview

segmentedview

ios 风格的分段控件,类似 UISegmentedControl

segmentedview

Gradle

repositories { 
    maven { url "https://jitpack.io" }
}
dependencies {
    compile 'com.github.czy1121:segmentedview:1.0.0'
}

Usage

XML

<com.github.czy1121.view.SegmentedView
    android:id="@+id/sv1"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:layout_marginBottom="10dp"
    app:svCornerRadius="10dp"
    app:svMainColor="#F44336"
    app:svStrokeWidth="1dp"
    app:svSubColor="#ffffff"
    app:svTexts="One|Two|Three|Four|Five|Six"/>

绑定事件

((SegmentedView)findViewById(resId)).setOnItemSelectedListener(new SegmentedView.OnItemSelectedListener() {
    @Override
    public void onSelected(int index, String text) {
        Toast.makeText(this,  index + " : " + text, Toast.LENGTH_SHORT).show();
    }
});

属性

<declare-styleable name="SegmentedView">
    <!-- 字体大小 -->
    <attr name="android:textSize" />

    <!-- "|" 分隔的文本 -->
    <attr name="svTexts" format="string" />
    <!-- 主色, 用于边框, 分隔线, 选中项的背景, 未选中项的文本 -->
    <attr name="svMainColor" format="color"/>
    <!-- 补色, 用于未选中项的背景, 选中项的文本, 默认 #ffffff -->
    <attr name="svSubColor" format="color"/>
    <!-- 边框, 分隔线 的宽度 -->
    <attr name="svStrokeWidth" format="dimension"/>
    <!-- 圆角大小 -->
    <attr name="svCornerRadius" format="dimension" />
    <!-- item 左右的边距 -->
    <attr name="svHPadding" format="dimension"/>
    <!-- item 上下的边距 -->
    <attr name="svVPadding" format="dimension"/>
</declare-styleable>

参考

SHSegmentControl

License

Copyright 2016 czy1121

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
You might also like...
Comments
  • 横竖屏旋转后,选中的分段会重置为第一个

    横竖屏旋转后,选中的分段会重置为第一个

    没有在 View 中保存恢复状态,可以在 SegmentedView 添加下面代码解决:

        private static final String SEGMENTED_VIEW = "segmented_view";
        private static final String SEGMENTED_VIEW_INDEX = "segmented_view_index";
    
    
        @Override protected Parcelable onSaveInstanceState() {
            Bundle bundle = new Bundle();
            bundle.putParcelable(SEGMENTED_VIEW, super.onSaveInstanceState());
            bundle.putInt(SEGMENTED_VIEW_INDEX, mCurrentIndex);
            return bundle;
        }
    
    
        @Override protected void onRestoreInstanceState(Parcelable state) {
            if (state instanceof Bundle) {
                Bundle bundle = (Bundle) state;
                mCurrentIndex = bundle.getInt(SEGMENTED_VIEW_INDEX);
                super.onRestoreInstanceState(bundle.getParcelable(SEGMENTED_VIEW));
                return;
            }
            super.onRestoreInstanceState(state);
        }
    
    opened by ssyijiu 0
Releases(1.0.0)
Owner
ezy
RE:从零开始的EZY
ezy
ios UISegmentedControl for android

android-segmented-control Android-Segmented is a custom view for Android which is based on RadioGroup and RadioButton widget. This implementation is i

Kaopiz Software Co., Ltd. 1.9k Dec 12, 2022
ios UISegmentedControl for android

android-segmented-control Android-Segmented is a custom view for Android which is based on RadioGroup and RadioButton widget. This implementation is i

Kaopiz Software Co., Ltd. 1.9k Dec 12, 2022
ios UISegmentedControl for android

android-segmented-control Android-Segmented is a custom view for Android which is based on RadioGroup and RadioButton widget. This implementation is i

Kaopiz Software Co., Ltd. 1.9k Dec 12, 2022