正在从特定字体的前面剪切文本

时间:2015-02-18 05:44:25

标签: android fonts textview

新行中每个单词的第一个字母被我们denealian cursive font 切断。enter image description here

看到这张照片是填充的。如果我没有使用任何填充,它就像在图2 enter image description here

这是我的代码

<com.font.anything.writinghelper
    android:id="@+id/textView" 
   android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textColor="#000000"
    android:padding="20dip"
    android:textSize="60sp"
    android:text="japanese google donkey elephant ostrich"
    />

这里编写助手是一个扩展textview的类,只是为了给文本加下划线

     protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    Rect r = mRect;
    int padding =55;
    Paint paint = mPaint;
    int count = getLineCount();
    for (int i = 0; i < count; i++) {
    int baseline = getLineBounds(i, r);
    canvas.drawLine(r.left - padding, baseline, r.right + padding,
            baseline, paint);
    }
    super.onDraw(canvas);
}

任何人都可以提供帮助吗?

修改

请求截图

enter image description here

有没有办法在TextView的左侧增加一些空间?

2 个答案:

答案 0 :(得分:2)

最后我为此做了一个工作..这是一个字体问题,我不确定它是否可以通过任何其他方式修复。所以我所做的是,首先获取TextView布局并获得结束和开始每一行,因此在每一行中获得字符串。现在在每行前面附加空格。这是整个代码。可以帮助别人。

    ArrayList<String> lines = new ArrayList<String>();
    ArrayList<String> newLines = new ArrayList<String>();
    String line="";
    String text = getText().toString();
    Layout layout = getLayout();
    int start=0;
    int end;

    for (int i=0; i<count; i++) {
        end = layout.getLineEnd(i);

        lines.add(text.substring(start,end));
        line = lines.get(i);
        start = end;
        String nwText = "";
        nwText = " "+ line+" ";
        newLines.add(nwText);
    }
    Paint mPaint = getPaint();
    int i = 0;
   // String[] textLines = Results.split("\\n+");
    //float textsize = getTextSize();

    for (String textLine : newLines)
    {
       // mPaint.setTextSize(textsize);
        int baseline = getLineBounds(i, r);
        canvas.drawText(textLine, 0, baseline, mPaint);
       i++;
    }

答案 1 :(得分:0)

我提出了类似的解决方案。这会递归地向行的开头和结尾添加空格,如果在添加空格时单词转到此解决方案下面的行,则会修复自身错误。 (第一个3变量有类范围)。

Contains

CompareTo