首页 > 解决方案 > 提取文本视图中显示的文本行

问题描述

是否可以获得多行文本的每一行,因为它将出现在固定宽度的文本视图中,具有字体、大小、对齐方式,而无需实际绘制文本视图?

我的文本存储在一个字符串中。我可以为文本应用不同的字体、大小、对齐方式。将它传递给我的 api 时,我想将它拆分为字符串列表,就像它在应用程序中的显示方式一样。这可能吗 ?

在视图中,文本使用以下格式设置:

    TextView textView = new TextView(getContext());

    LayoutParams textLayoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

    if (itemWidth > 0) {
        textLayoutParams.width = itemWidth;
    }

    if (itemHeight == -1) {
        textLayoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
    }

    textLayoutParams.leftMargin = xPosition;
    textLayoutParams.topMargin = yPosition;
    textView.setLayoutParams(textLayoutParams);
    textView.setPaintFlags(Paint.ANTI_ALIAS_FLAG);
    font = getFontName(font);

    if (!StringUtils.isEmpty(font)) {
        CalligraphyUtils.applyFontToTextView(getContext(), textView, CalligraphyConfig.get(), "fonts/" + font);
    }

    if (!StringUtils.isEmpty(color))
        textView.setTextColor(Color.parseColor(color));

    textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, (int)size );

    if (alignment.equalsIgnoreCase("center")) {
        textView.setGravity(Gravity.CENTER);
    } else if (alignment.equalsIgnoreCase("left")) {
        textView.setGravity(Gravity.START);
    } else if (alignment.equalsIgnoreCase("right")) {
        textView.setGravity(Gravity.END);
    } else if (alignment.equalsIgnoreCase("left_center")) {
        textView.setGravity(Gravity.START | Gravity.CENTER);
    }

    addView(textView);

对于多行字符串,它将显示在不同的行上。在后台进程中,我想知道哪个子字符串显示在第一行,哪个子字符串显示在第二行等等。这甚至可能吗?

标签: android

解决方案


推荐阅读