Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用TextView动态显示文本(Android)_Java_Android_Android Layout_Textview - Fatal编程技术网

Java 使用TextView动态显示文本(Android)

Java 使用TextView动态显示文本(Android),java,android,android-layout,textview,Java,Android,Android Layout,Textview,基本上,我想在Android应用程序中使用TextView同时显示两段不同的文本。因此,在代码中,我希望能够执行如下操作: LinearLayout ll = new LinearLayout(this); TextView text = new TextView(this); text.setTextColor(0xFF000000); text.setGravity(Gravity.CENTER_HORIZONTAL); text.setTextSiz

基本上,我想在Android应用程序中使用TextView同时显示两段不同的文本。因此,在代码中,我希望能够执行如下操作:

    LinearLayout ll = new LinearLayout(this);
    TextView text = new TextView(this);
    text.setTextColor(0xFF000000);
    text.setGravity(Gravity.CENTER_HORIZONTAL);
    text.setTextSize(20f);
    text.setText("Text1");
    text.setTextSize(14f);
    text.setColor(0xFF0000FF);
    text.setText("\nText2");
    ll.addView(text);
为了澄清这一点,我试图用一个文本视图同时显示一个黑色的“Text1”和一个蓝色的“Text2”。显然,使用上面的代码是行不通的。我曾考虑过使用第二个文本视图,但对我来说,这似乎是在浪费精力和内存。我相信这里的聪明人能想出最好的解决办法


非常感谢您的时间和帮助。

问题似乎出在:

LinearLayout.addView(text);
您试图将视图添加到LinearLayout,但该布局不存在(在当前活动中)。您需要将TextView添加到正在使用的.xml中定义的布局中。假设在xml文件“activity1.xml”中有一个id为“linearlayout01”的LinearLayout,您可以执行以下操作:

setContentView(R.layout.activity1);

// Create and adjust TextView text

...

LinearLayout layout = (LinearLayout) findViewById(R.id.linearlayout01);
layout.addView(text);

问题似乎在于:

LinearLayout.addView(text);
您试图将视图添加到LinearLayout,但该布局不存在(在当前活动中)。您需要将TextView添加到正在使用的.xml中定义的布局中。假设在xml文件“activity1.xml”中有一个id为“linearlayout01”的LinearLayout,您可以执行以下操作:

setContentView(R.layout.activity1);

// Create and adjust TextView text

...

LinearLayout layout = (LinearLayout) findViewById(R.id.linearlayout01);
layout.addView(text);
将添加到其子代的后,无需读取它来更新其显示。如果您对视图进行任何更改,要求它更改其显示,则它将通过调用和(在适当的情况下)来处理有关所需重画或重新显示的所有正确通知

此外,由于所有UI更改都在同一个线程上处理,因此您无需担心调用多个方法来更新UI。这是因为两个原因,第一,重画的执行在代码完成之前不会发生,第二,android内置了将多个invalidate调用组合成一个的优化

因此,您唯一需要担心的是获得对实例的正确引用,然后您可以调用实例上的所有方法,以使其显示所需的内容

由于您是手动而不是从xml创建
视图
,因此需要通过调用将根
视图组
添加到

编辑:

然后你需要了解和。这里有一些非常简短的文档:

一旦将a添加到其后代,您不需要读取它来更新其显示。如果您对视图进行任何更改,要求它更改其显示,则它将通过调用和(在适当的情况下)来处理有关所需重画或重新显示的所有正确通知

此外,由于所有UI更改都在同一个线程上处理,因此您无需担心调用多个方法来更新UI。这是因为两个原因,第一,重画的执行在代码完成之前不会发生,第二,android内置了将多个invalidate调用组合成一个的优化

因此,您唯一需要担心的是获得对实例的正确引用,然后您可以调用实例上的所有方法,以使其显示所需的内容

由于您是手动而不是从xml创建
视图
,因此需要通过调用将根
视图组
添加到

编辑:


然后你需要了解和。这里有一些非常简短的文档:

您计划何时更新
textview
?如果是单击按钮,则获取对
textview
的引用,并在onClickListener()中更新文本、颜色等您想要执行的任何操作


看到你的其他评论后,我想这就是你想要的

你打算什么时候更新
文本视图
?如果是单击按钮,则获取对
textview
的引用,并在onClickListener()中更新文本、颜色等您想要执行的任何操作


看到你的其他评论后,我想这就是你想要的

你有两个选择

一是

另一个是


这样您就可以获得所需的输出。

有两个选项供您选择

一是

另一个是


因此,您可以获得所需的输出。

我认为使用当前版本的代码,您只能看到最新的文本(Text2)。 如果您想对两个文本拥有多个外观,我建议使用两个单独的文本视图。这将增加更多的灵活性


如果您以后不打算更改这个UI代码,那么您可以在StTrimeTo()调用中考虑HTML.toHTML*()。

< P>我认为,在代码的当前版本中,您只能看到最新的文本(TeT2)。 如果您想对两个文本拥有多个外观,我建议使用两个单独的文本视图。这将增加更多的灵活性


如果以后你不打算改变这个UI代码,那么你可以在StTrimeTo()调用中考虑HTML.toHTML*()。< / P>不,你完全误解了我。可能是我的错;我是通用的,以保持我的代码大小较小。我将修正这个问题。假设线性布局确实存在,然后再看看我的问题。我的问题不是文本没有出现,我的问题是动态地改变文本。不,你完全误解了我。可能是我的错;我是通用的,以保持我的代码大小较小。我将修正这个问题。假设线性布局确实存在,然后再看看我的问题。我的问题不是文本没有出现,我的问题是动态地改变文本。不,你不明白我的意思。可能是我的错,我会尽力澄清这个问题。我想在一个渲染中显示两种不同类型的文本,而不是在多个渲染中。对于我上面发布的代码,只呈现“Text2”。我希望能够同时显示“Text1”和“Text2”有关Spanna的信息