自定义View之仿ios分段选择器

一:效果

1.1 可动态添加或删除tab,更改指定tab的文字。

二:实现思路

  1. 自定义view,实现效果
  2. 动态创建textview,有几个tab创建几个textview
  3. 第一个tab和最后一个tab为圆角矩形,其余的为直角矩形,通过shape文件完成
  4. 默认选中第一个tab选项,更改背景颜色和textview颜色,更改其余所有tab的颜色
  5. 设置点击事件,动态更改每一个tab的颜色

三:代码实现

思路我们已经清晰了,下面按照我们的思路编码就行了,没什么难度,下面我就直接贴出代码了,有需要的同学直接拿去用就好了。

在这里重点说一下每个tab中间的分割线,如果不单独做处理的话,你会发现tab的分割线和边框线宽度不一致,影响整体美观度,是因为第一个tab绘制了一遍分割线,第二个tab又绘制了一遍分割线。

博主的处理方式为:

  1. 为整个自定义view设置一个整体的边框
  2. 每个tab只设置右边的一条边框,最后一个tab不设置边框,采用 <layer-list> 实现

3.1 自定义view代码

package com.zuohp.jstt.widget;

import android.content.Context;
import android.content.res.ColorStateList;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;


import com.zuohp.jstt.R;

import java.util.ArrayList;
import java.util.List;

public class SegmentView extends LinearLayout {
    // 实现不同的按钮状态,不同的颜色
    ColorStateList cs1 = getResources().getColorStateList(R.color.white);
    ColorStateList cs2 = getResources().getColorStateList(R.color.colorPrimaryDark);
    private onSegmentViewClickListener segmentListener;
    //存放textview的集合
    List<TextView> views = new ArrayList<TextView>();

    // 这是代码加载ui必须重写的方法
    public SegmentView(Context context) {
        super(context);
    }
    // 这是在xml布局使用必须重写的方法
    public SegmentView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public SegmentView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    //主要方法
    public v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值