如何在EditText中为新文本段增加行高

时间:2017-03-20 13:26:39

标签: android

我有一个EditText,我想在行之间留出更大的空间,但只有当用户通过按返回创建一个新行时。 当文本自行返回时,我不希望空间变大,因为行太长了。

我尝试使用lineSpacingExtra,但不幸的是它在两种情况下都改变了行高。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以附加TextWatcher并从提供的回调中处理您的逻辑。

使您的活动/片段实现TextWatcher。

实施回调。

在您的activity / fragment中保留一个布尔变量,以指示行间距是否为“#”状态。

@posts = Post.where("created_at > ?", Time.now.beginning_of_month)

答案 1 :(得分:0)

我找到了一种使用跨度的方法。 每当我检测到插入的“\ n”(使用TextWatcher)时,我用TopPaddedSpan包装我的新行。

class TopPaddedSpan implements LineHeightSpan {

    private boolean initialised = false;
    private int originalAscent;
    private int increasedAscent;

    @Override
    public void chooseHeight(CharSequence text, int start, int end, int spanstartv, int v, Paint.FontMetricsInt fm) {
        if (!initialised) {
            originalAscent = fm.ascent;
            increasedAscent = Math.round(fm.ascent * 1.6f);
            initialised = true;
        }
        if (spanstartv == v) { // First drawn line
            fm.ascent = increasedAscent;
        } else { // Any other lines
            fm.ascent = originalAscent;
        }
    }
}

希望它会对某人有所帮助