We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
显示就是这个样子的,其他手机正常,就魅族16s pro这个手机显示异常,down下源码排查了好久,最终怀疑应该是魅族手机对tagview的测量有问题, 最后解决方法代码如下
代码也附上哈,避免github抽风图片显示不出来,其他原样无关的代码以点点点代替哈:
class TagView extends androidx.appcompat.widget.AppCompatTextView { ....... public TagView(Context context, final int state, CharSequence text) { super(context); setGravity(Gravity.CENTER); setText(text); setMaxLines(1); setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize); mState = state; setClickable(isAppendMode); setFocusable(state == STATE_INPUT); setFocusableInTouchMode(state == STATE_INPUT); setHint(state == STATE_INPUT ? inputHint : null); setMovementMethod(state == STATE_INPUT ? ArrowKeyMovementMethod.getInstance() : null); ........ invalidatePaint(); setPadding(horizontalPadding, verticalPadding, horizontalPadding, verticalPadding); //setLayoutParams(new ViewGroup.LayoutParams(TagGroup.LayoutParams.WRAP_CONTENT, TagGroup.LayoutParams.WRAP_CONTENT)); setLayoutParams(new ViewGroup.LayoutParams(StephenToolUtils.getStringPixelWidth(getPaint(), text.toString()) + (horizontalPadding * 2), StephenToolUtils.getStringPixelMaxHeightForInt(getPaint()) + (verticalPadding * 2))); } .............. @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int widthSize = MeasureSpec.getSize(widthMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); setMeasuredDimension(widthSize, heightSize); //super.onMeasure(widthMeasureSpec, heightMeasureSpec); } .............. }
然后里面用到的StephenToolUtils相关方法如下:
//计算字符串的宽度(像素) public static int getStringPixelWidth(Paint strPaint, String str) { return ((int) strPaint.measureText(str)); } //计算字符串的高度(像素) public static int getStringPixelHeight(Paint strPaint, String str) { Rect rect = new Rect(); strPaint.getTextBounds(str, 0, str.length(), rect); return rect.height(); } //计算字符串的高度(像素)(抵拢字体显示上下,没有空白) public static int getStringPixelMinHeightForInt(Paint strPaint) { Paint.FontMetricsInt fontMetrics = strPaint.getFontMetricsInt(); return fontMetrics.descent - fontMetrics.ascent; } //计算字符串的高度(像素)(字体显示上下处包含些许空白) public static int getStringPixelMaxHeightForInt(Paint strPaint) { Paint.FontMetricsInt fontMetrics = strPaint.getFontMetricsInt(); return fontMetrics.bottom - fontMetrics.top; } //计算字符串的高度(像素)(抵拢字体显示上下,没有空白) public static float getStringPixelMinHeightForFloat(Paint strPaint) { Paint.FontMetrics fontMetrics = strPaint.getFontMetrics(); return fontMetrics.descent - fontMetrics.ascent; } //计算字符串的高度(像素)(字体显示上下处包含些许空白) public static float getStringPixelMaxHeightForFloat(Paint strPaint) { Paint.FontMetrics fontMetrics = strPaint.getFontMetrics(); return fontMetrics.bottom - fontMetrics.top; }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
显示就是这个样子的,其他手机正常,就魅族16s pro这个手机显示异常,down下源码排查了好久,最终怀疑应该是魅族手机对tagview的测量有问题,
最后解决方法代码如下
代码也附上哈,避免github抽风图片显示不出来,其他原样无关的代码以点点点代替哈:
然后里面用到的StephenToolUtils相关方法如下:
The text was updated successfully, but these errors were encountered: