如何更改活动标签指示器的颜色? (Android Studio)

时间:2016-05-11 10:10:54

标签: android tabs

我想知道我是否能够将活动标签指示灯(浅蓝色线条)的颜色更改为黑色(#4A4A4A)

Here is the photo

2 个答案:

答案 0 :(得分:0)

如果您使用的是支持库。 将其添加到tabLayout

app:tabIndicatorColor="#4A4A4A"

答案 1 :(得分:0)

public class PageIndicator extends View {
    int totalNoOfDots;
    int activeDot;
    int dotSpacing;
    int horizontalSpace = 5;
    Bitmap activeDotBitmap;
    Bitmap normalDotBitmap;
    int x = 0;

    private Paint paint;

    public PageIndicator(Context context) {
        super(context);
        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        activeDotBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.dot_active);
        normalDotBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.dot_normal);
    }

    public PageIndicator(Context context, AttributeSet attrs) {
        super(context, attrs);
        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        activeDotBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.dot_active);
        normalDotBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.dot_normal);

    }

    public PageIndicator(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        activeDotBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.dot_active);
        normalDotBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.dot_normal);

    }

    @Override
    protected void onDraw(Canvas canvas) {
        drawDot(canvas);
        super.onDraw(canvas);

    }


    private void drawDot(Canvas canvas) {
        for (int i = 0; i < totalNoOfDots; i++) {
            if (i == activeDot) {
                canvas.drawBitmap(activeDotBitmap, x, 0, paint);
            } else {
                canvas.drawBitmap(normalDotBitmap, x, 0, paint);
            }
            x = x + activeDotBitmap.getWidth() + horizontalSpace + dotSpacing;
        }
    }


    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int width = totalNoOfDots * (activeDotBitmap.getWidth() + horizontalSpace + getDotSpacing());
        width = resolveSize(width, widthMeasureSpec);
        int height = activeDotBitmap.getHeight();
        height = resolveSize(height, heightMeasureSpec);
        setMeasuredDimension(width, height);
    }

    public void refersh() {
        x = 0;
        invalidate();
    }


    public int getTotalNoOfDots() {
        return totalNoOfDots;
    }

    public void setTotalNoOfDots(int totalNoOfDots) {
        this.totalNoOfDots = totalNoOfDots;
        x = 0;
        invalidate();
    }

    public int getActiveDot() {
        return activeDot;
    }

    public void setActiveDot(int activeDot) {
        this.activeDot = activeDot;
        x = 0;
        invalidate();
    }

    public int getDotSpacing() {
        return dotSpacing;
    }

    public void setDotSpacing(int dotSpacing) {
        this.dotSpacing = dotSpacing;
        x = 0;
        invalidate();
    }


}