elvishew/xLog

日志错位问题

Closed this issue · 3 comments

Android studio 升级到3.1.4出现日志错位问题,2.3.3没有问题。
image
image

改造一下 DefaultBorderFormatter:

class NewLineBorderFormatter : BorderFormatter {
// 删除了无关代码
    override fun format(segments: Array<String?>?): String {
        if (segments == null || segments.isEmpty()) {
            return ""
        }

        val nonNullSegments = arrayOfNulls<String>(segments.size)
        var nonNullCount = 0
        for (segment in segments) {
            if (segment != null) {
                nonNullSegments[nonNullCount++] = segment
            }
        }
        if (nonNullCount == 0) {
            return ""
        }

        val msgBuilder = StringBuilder()
        msgBuilder.append(" " + SystemCompat.lineSeparator)
                .append(TOP_HORIZONTAL_BORDER)
                .append(SystemCompat.lineSeparator)
        for (i in 0 until nonNullCount) {
            msgBuilder.append(appendVerticalBorder(nonNullSegments[i] ?: ""))
            if (i != nonNullCount - 1) {
                msgBuilder.append(SystemCompat.lineSeparator).append(DIVIDER_HORIZONTAL_BORDER)
                        .append(SystemCompat.lineSeparator)
            } else {
                msgBuilder.append(SystemCompat.lineSeparator).append(BOTTOM_HORIZONTAL_BORDER)
            }
        }
        return msgBuilder.toString()
    }
// 删除了无关代码
}

TOP_HORIZONTAL_BORDER 前面加上了换行符
输出如下:
image

@ahjsrhj Can you just extends DefaultBorderFormatter and override its format method?

@Override
public String format(String[] segments) {
  String formatted = super.format(segments);
  if (formatted.length() > 0) {
    formatted = SystemCompat.lineSeparator + formatted;
  }
  return formatted;
}

@shenbengit Hope it can work for you.

xbyl commented

formatted = "|" + SystemCompat.lineSeparator + formatted ;