Add CustomTypefaceSpan
This commit is contained in:
parent
0a54ebbd6f
commit
cd8016eb68
@ -0,0 +1,43 @@
|
||||
package ru.noties.markwon.core.spans;
|
||||
|
||||
import android.graphics.Typeface;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.text.TextPaint;
|
||||
import android.text.style.MetricAffectingSpan;
|
||||
|
||||
/**
|
||||
* A span implementation that allow applying custom Typeface. Although it is
|
||||
* not used directly by the library, it\'s helpful for customizations.
|
||||
* <p>
|
||||
* Please note that this implementation does not validate current paint state
|
||||
* and won\'t be updating/modifying supplied Typeface.
|
||||
*
|
||||
* @since 3.0.0
|
||||
*/
|
||||
public class CustomTypefaceSpan extends MetricAffectingSpan {
|
||||
|
||||
@NonNull
|
||||
public static CustomTypefaceSpan create(@NonNull Typeface typeface) {
|
||||
return new CustomTypefaceSpan(typeface);
|
||||
}
|
||||
|
||||
private final Typeface typeface;
|
||||
|
||||
public CustomTypefaceSpan(@NonNull Typeface typeface) {
|
||||
this.typeface = typeface;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateMeasureState(@NonNull TextPaint p) {
|
||||
updatePaint(p);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDrawState(TextPaint tp) {
|
||||
updatePaint(tp);
|
||||
}
|
||||
|
||||
private void updatePaint(@NonNull TextPaint paint) {
|
||||
paint.setTypeface(typeface);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user