我可以找到唯一的解决方案是获取原始TabLayout的源代码,并根据您的需要进行自定义.
事实上,你需要做的只是为了覆盖SlidingTabStrip的void draw(Canvas canvas)方法.不幸的是,SlidingTabStrip是TabLayout中的私有内部类.
幸运的是,所有的支持库代码是开放的,所以我们可以创建我们自己的TabLayoutWithArrow类.我用这个代替了标准的void draw(Canvas canvas)来绘制箭头:
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
// i used 3dp
int arrowSize = getResources().getDimensionPixelSize(R.dimen.pointing_arrow_size);
if (mIndicatorLeft >= 0 && mIndicatorRight > mIndicatorLeft) {
canvas.drawRect(mIndicatorLeft,getHeight() - mSelectedIndicatorHeight - arrowSize,mIndicatorRight,getHeight() - arrowSize,mSelectedIndicatorPaint);
canvas.drawPath(getTrianglePath(arrowSize),mSelectedIndicatorPaint);
}
}
private Path getTrianglePath(int arrowSize) {
mSelectedIndicatorPaint.setStyle(Paint.Style.FILL_AND_STR