Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用自定义TypefaceSpan类更改fontsize_Java_Android_Xml_Eclipse - Fatal编程技术网

Java 如何使用自定义TypefaceSpan类更改fontsize

Java 如何使用自定义TypefaceSpan类更改fontsize,java,android,xml,eclipse,Java,Android,Xml,Eclipse,我在使用twaddington在这篇文章中的建议: 它正在工作,但我需要更改字体大小。我该怎么做?我试图修改参数int maxSize from private static LruCache<String, Typeface> sTypefaceCache = new LruCache<String, Typeface>(12); 创建时的主要活动 protected void onCreate(Bundle savedInstanceState) { su

我在使用twaddington在这篇文章中的建议:

它正在工作,但我需要更改字体大小。我该怎么做?我试图修改参数int maxSize from

private static LruCache<String, Typeface> sTypefaceCache =
new LruCache<String, Typeface>(12);
创建时的主要活动

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    SpannableString s = new SpannableString("TEST TITLE");
    s.setSpan(new TypefaceSpan(this, "MotorwerkOblique.ttf"), 0, s.length(),
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    ActionBar actionBar = getActionBar();
    actionBar.setTitle(s);
}

将其添加到paint中,每次更新时都会应用新的paint,该paint应指定textSize。把字体想象成更多的字体/字符集。Android文档说明:

Typeface类指定字体的字体和固有样式 字体。这将与可选的绘制设置一起用于绘制 与textSize、textSkewX、textScaleX类似,用于指定在 绘制(和测量)

读完这篇文章后,我建议做以下几点。(不确定这是否符合您的要求。但请告诉我)


如果您不想自己进行文本渲染,只想专注于使用该实用程序,那么文本渲染器可以识别三种跨度类型来实现这一点

此范围将采用绝对值乘以文本范围的当前大小。这主要用于强调。因此,正值将使大小增加一个因子,负值将使大小减少一个因子

此范围允许您取消对命名样式的引用,以便在此文本范围内使用,
R.style.TextAppearance.extrawawesomsetext
。这种风格有如下特点:

<style name="TextAppearance.ExtraAwesomeText">
      <item name="android:textSize">18sp</item>
</style>

我通常坚持使用
光栅化span
,因为这是一种蛮力,用于定义自定义模板或非常奇怪的一次性操作。

谢谢,非常感谢
@Override
public void updateMeasureState(TextPaint p) {
    p.setTypeface(mTypeface);
    // Note: This flag is required for proper typeface rendering
    p.setFlags(p.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
    p.setTextSize(25);//or what ever size you want
}

@Override
public void updateDrawState(TextPaint tp) {
    tp.setTypeface(mTypeface);
    // Note: This flag is required for proper typeface rendering
    tp.setFlags(tp.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
    tp.setTextSize(25);//or what ever size you want
}
<style name="TextAppearance.ExtraAwesomeText">
      <item name="android:textSize">18sp</item>
</style>
<style name="TextAppearance.ExtraAwesomeText">
      <item name="android:textSize">18sp</item>
      <item name="android:textColor">#005500</item>
      <item name="android:textStyle">bold</item>
</style>
charSequence.setSpan(new RasterizerSpan() {

     public void updateDrawState(TextPaint textPaint) {
            // add a text shadow to the given range
            textPaint.setShadowLayer(5, 5, 5 0x005500);
     }
 }, 0, charSequence.length() - 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);