Skip to content

Commit 0e4a457

Browse files
committed
修复文字渐变色在某些字母(ypgj)底部显示不正常的问题
1 parent df4888f commit 0e4a457

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

app/src/main/res/layout/activity_main.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@
384384
android:layout_margin="10dp"
385385
android:gravity="center"
386386
android:padding="10dp"
387-
android:text="文本垂直渐变效果"
387+
android:text="文本垂直渐变效果ypgj"
388388
android:textSize="18sp"
389389
app:shape_textEndColor="#ED58FF"
390390
app:shape_textGradientOrientation="vertical"

library/src/main/java/com/hjq/shape/span/LinearGradientFontSpan.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.graphics.Canvas;
44
import android.graphics.LinearGradient;
55
import android.graphics.Paint;
6+
import android.graphics.Paint.FontMetricsInt;
67
import android.graphics.Shader;
78
import android.support.annotation.NonNull;
89
import android.text.SpannableStringBuilder;
@@ -58,8 +59,9 @@ public void onDraw(@NonNull Canvas canvas, @NonNull Paint paint, CharSequence te
5859
int start, int end, float x, int top, int y, int bottom) {
5960
LinearGradient linearGradient;
6061
if (mTextGradientOrientation == GRADIENT_ORIENTATION_VERTICAL) {
61-
linearGradient = new LinearGradient(0, 0, 0, paint.descent() - paint.ascent(),
62-
mTextGradientColor, mTextGradientPositions, Shader.TileMode.REPEAT);
62+
FontMetricsInt fontMetrics = paint.getFontMetricsInt();
63+
linearGradient = new LinearGradient(0, 0, 0, fontMetrics.bottom - fontMetrics.top,
64+
mTextGradientColor, mTextGradientPositions, Shader.TileMode.MIRROR);
6365
} else {
6466
linearGradient = new LinearGradient(x, 0, x + textWidth, 0,
6567
mTextGradientColor, mTextGradientPositions, Shader.TileMode.REPEAT);

0 commit comments

Comments
 (0)