java - Android中的TextView在'/'字符后不显示任何文本
问题描述
我有一个显示参数名称、参数值和单位的 TextView。(如“速度 5 m/s”)
由于我需要该值来更改它的颜色,因此我使用处理程序在两个字符串之间切换。这两个字符串都注入了 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/”
编辑: 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" />
它可以在没有自动调整大小和较小的文本大小的情况下工作。但是为什么会断掉呢?
解决方案
看起来 maxLines 属性被忽略了,因为我在设置它之后将文本附加到我的 TextView 中。我通过设置修复它
m_displayLine2.setLines(1);
在附加我的字符串的所有部分之后再次。
推荐阅读
- python - 如何以编程方式确保函数包含 return 语句?
- python - 如何将雪花主键读入python
- flutter - 在 Flutter 中使用 Android Intent 打开 PDF
- python - Python 请求库限制 api 调用
- reactjs - laravel react webpack 用 dist 文件制作了许多额外的 .js
- r - (AD) 使用 shinywidgets 从 pickerInput 中删除“全选”操作按钮
- visual-studio - 如何在 VIsual Studio 2019 Windows 10 上安装 Visual Studio 2010 (v100) 平台工具集?
- angular - 如何在 Angular 中始终如一地获取延迟加载模块的根路由?
- c# - 打开未设置为对象的对象引用时出现 Edmx 文件错误
- roomle - Roomle 中是否有导入布局的功能,我想更改?(.dwg, .dxf,)