2012-11-26 70 views
0

我是初学者,当谈到Android开发时,我正在尝试编写一个搜索应用程序,它接收一个字符串并输出包含该字符串的文本消息。我的问题是尝试在第二个屏幕上格式化文本输出。我有文本显示正确使用的代码:Xml布局文件无法使用Textview

 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块复制到了我的activity_main.xml,并且它在第一个屏幕上显示了一个粗体的“hello world”,而不是第二个,即使TextView部分是精确副本。我在第一次在做的第二件事中错过了什么?我的TextView声明中存在问题吗?我的最终目标是显示许多文本消息匹配,并强制它们水平放置在屏幕上,并允许用户垂直滚动,更改第二个xml文件的方式是错误的?

感谢

回答

1

看样子你是混合了两种不同的方式来 '创造' 的观点:

  1. 在XML宣布他们和他们膨胀
  2. 实例编程他们

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

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

为了在这样的布局定义中使用视图,您需要'充气'它。一个共同的地方是在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); 

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

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

我希望你看到这是怎么回事?你的代码片断建议你使用第二种方法,而你的解释提到你正在修改布局文件,希望看到变化。基本上你正在改变你目前没有使用的布局文件,因此你没有看到任何事情发生。

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

+0

这是否意味着,如果我用我不能在运行时添加文本第一种方法? – farnett

+0

不,您仍然可以添加文本并操作“TextView”添加运行时。这是所有真正的,非常基本的东西,所以我建议阅读Android网站上的入门部分。特别是,请看“[构建简单的用户界面](http://developer.android.com/training/basics/firstapp/building-ui.html)”。 –

+0

非常感谢您的帮助,我想我已经明白了。我正在浏览该部分,但它在textview部分上看起来并不特别。 – farnett

0

你的问题是这样的:

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

如果你设置的setContentView这样的,无论你怎么改变你的XML文件,你仍然得到同样的事情。大小为20的文本。
尝试创建新布局并在其上添加文本视图。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 


     <TextView 
      android:id="@+id/TextView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" /> 

    </LinearLayout> 

更改您的代码如下:

setContentView(R.layout.new_layout); 
TextView textView = (TextView)findViewById(R.id.TextView1); 
..... (find string matches) 

     textView.append(msg); 
相关问题