java - Xml 布局文件不适用于 Textview

标签 java android xml eclipse

我是 Android 开发的初学者,我正在尝试编写一个搜索应用程序,该应用程序接受字符串并输出包含该字符串的文本消息。我的问题是尝试格式化第二个屏幕上的文本输出。我使用代码正确显示文本:

     TextView textView = new TextView(this);
     textView.setTextSize(20);

    // Set the text view as the activity layout
      setContentView(textView);

..... (find string matches)

      textView.append(msg);

但是,当我去编辑该文件的 .xml 文件时,没有任何变化(我尝试添加粗体、添加起始文本等)。我将 TextView xml block 复制到 Activity_main.xml 中,它在第一个屏幕上显示粗体“hello world”,而不是第二个屏幕,即使 TextView 部分是精确的副本也是如此。我在第二个过程中缺少什么而我在第一个过程中正在做的事情?我的问题出在我的 TextView 声明中吗?我的最终目标是显示许多文本消息匹配并强制它们水平适合屏幕并允许用户垂直滚动,更改第二个 xml 文件是否是错误的方法?

谢谢

最佳答案

看来您混合了两种不同的方式来“创建” View :

  1. 在 xml 中声明它们并扩充它们
  2. 以编程方式实例化它们

第一种方法是使用 xml 文件(静态)声明布局。 IE。您的布局文件可能名为 activity_layout.xml 并包含以下条目,该条目定义了 ID 为 textview1TextView

<TextView android:id="@+id/textview1" ... />

为了在这样的布局定义中使用 View ,您需要“膨胀”它。一个常见的地方是在 Activity 中。但是,您首先需要告诉 Android 从哪个布局进行膨胀:

// inflate from 'activity_layout.xml'
setContentView(R.layout.activity_layout);
// inflate the TextView with id 'textview1'
TextView textview = (TextView) findViewById(R.id.textview1);

现在,第二种方法是在代码中(动态)实例化 View 。这不需要布局文件。通常,您可以将其与膨胀区分开来,因为存在“new”关键字。即

// not xml definition required; all code
TextView textview = new TextView(getActivity());

我希望你明白这是怎么回事?您的代码 fragment 表明您正在使用第二种方法,而您的解释提到您正在修改布局文件以希望看到更改。基本上,您正在更改当前未使用的布局文件,因此您看不到任何事情发生。

要么更改代码以使用布局中的 View ,要么摆脱布局并在代码中完成所有操作。通常第一种方法更灵活且更易于使用;例如您将能够从 Eclipse 中的预览中受益,并且如果布局变得更加复杂,管理也会变得更加容易。

关于java - Xml 布局文件不适用于 Textview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13557621/

相关文章:

java - JaxB 如何将列表的内容编码为单独的标签

java - 哈希表、ConcurrentHashMap 和数据可见性

java,paint Jpanel,它在另一个JPanel里面

java - 运行 Java 和 SQL 数据库连接时出现错误

java - 如何在 Java 中触发 sleep 或 hibernate 唤醒功能?

android - 无法使用 OkHttp3 在文件管理器中选择文件

java - 用 Java 构建 SOAP 客户端

android - 在 EditText 中拦截空格键的问题

android - 如何将大型编码的base64图像字符串从Android发送到Mysql

android - ActionBar 选项和图标