Android中的TextView在'/'字符后不显示任何文本

时间:2019-10-23 14:17:48

标签: java android

我有一个TextView,它显示参数的名称,参数的值和单位。 (例如“速度5 m / s”)

因为我需要更改其颜色的值,所以我使用Handler在两个String之间切换。这两个字符串都注入了html代码,因此我可以更改颜色而无需具有多个TextView。

我现在的问题是,如果我的字符串中有破折号('/'),则后面的所有字符都不会显示。

如果我替换字符串中的斜杠,它将起作用。但这不是真正的解决方案。

private void setBlinkText(){
try{
    strBlinkOff = "speed <font color='#fafafa'>12</font> m/s";
    strBlinkOn = "speed  <font color='#212121'>12</font> m/s";


        m_displayLine.setText(strBlinkOff.substring(0, strBlinkOff.indexOf('<')));

        m_displayLine.append(Html.fromHtml(strBlinkOff.substring(strBlinkOff.indexOf('<'), strBlinkOff.indexOf("font>")), Html.FROM_HTML_MODE_LEGACY));

        m_displayLine.append(strBlinkOff.substring(strBlinkOff.indexOf("font>") + 5));


    m_blinkHandler = new Handler();
    final String strFinalBlinkOn = strBlinkOn;
    m_blinkHandler.postDelayed(new Runnable()
    {
        @Override
        public void run()
        {

                m_displayLine.setText(strFinalBlinkOn.substring(0, strFinalBlinkOn.indexOf('<')));

                m_displayLine.append(Html.fromHtml(strFinalBlinkOn.substring(strFinalBlinkOn.indexOf('<'), strFinalBlinkOn.indexOf("font>")), Html.FROM_HTML_MODE_LEGACY));

                m_displayLine.append(strFinalBlinkOn.substring(strFinalBlinkOn.indexOf("font>") + 5));


            m_blinkHandler.postDelayed(new Runnable()
            {
                @Override
                public void run()
                {
                    setBlinkText(p_strMessage);
                }
            }, 800);
        }
    }, 300);
} catch(Exception e)
{
    Toast.makeText(getContext(), "Error", Toast.LENGTH_SHORT).show();
}

}

m_displayLine应该显示“速度12 m / s”,而只显示“速度12 m / s”

编辑:TextView看起来像这样:

    <TextView
        android:id="@+id/ToolTextLine2"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginStart="12dp"
        android:layout_marginEnd="12dp"
        android:background="@color/accentGreenLight"
        android:fontFamily="@font/lordmeg09"
        android:maxLength="16"
        android:maxLines="1"
        android:paddingStart="12dp"
        android:paddingEnd="12dp"
        android:paddingTop="8dp"
        android:paddingBottom="8dp"
        android:textColor="#2d373c"
        android:textSize="28sp"
        app:autoSizeTextType="uniform"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/guidelineTool2" />

它无需自动调整大小和较小的文本大小即可工作。但是为什么会被切断呢?

2 个答案:

答案 0 :(得分:0)

看起来像maxLines属性被忽略了,因为我已经在设置文本后将其追加到了TextView中。我通过设置

来修复它
m_displayLine2.setLines(1);
再次

附加我的字符​​串的所有部分。

答案 1 :(得分:-1)

尝试使用&sol;代替/