0

私はAndroid開発の初心者であり、文字列を受け取り、その文字列を含むテキストメッセージを出力する検索アプリケーションを作成しようとしています。私の問題は、2番目の画面で出力されたテキストをフォーマットしようとすることです。コードを使用してテキストを正しく表示しています:

     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にコピーすると、TextViewセクションが正確にコピーされている場合でも、最初の画面に太字の「hello world」が表示され、2番目の画面には表示されませんでした。私が最初にやっていることは、私が2番目に欠けていることは何ですか?TextView宣言に問題がありますか?私の最終目標は、多くのテキストメッセージの一致を表示し、それらを画面に水平に合わせて強制的に表示し、ユーザーが垂直にスクロールできるようにすることです。2番目のxmlファイルを変更するのは間違った方法ですか?

ありがとう

4

2 に答える 2

1

ビューを「作成」する2つの異なる方法を混同しているようです。

  1. それらをxmlで宣言し、それらを膨らませます
  2. プログラムでそれらをインスタンス化する

最初のアプローチは、xmlファイルを使用して(静的に)レイアウトを宣言する方法です。つまり、レイアウトファイルに名前を付けて、IDactivity_layout.xmlを定義する次のエントリを含めることができます。TextViewtextview1

<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);

ここで、2番目のアプローチは、コード内のビューを(動的に)インスタンス化することです。これにはレイアウトファイルは必要ありません。通常、「new」キーワードが存在するため、これを膨張と区別することができます。つまり

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

これがどこに向かっているのか見ていただければ幸いです。コードスニペットは、2番目のアプローチを使用していることを示唆していますが、説明では、変更を確認するためにレイアウトファイルを変更していると述べています。基本的に、現在使用していないレイアウトファイルを変更しているため、何も起こりません。

レイアウト内のビューを使用するようにコードを変更するか、レイアウトを削除してすべてをコード内で実行します。通常、最初のアプローチはより柔軟で使いやすいものです。たとえば、Eclipseでのプレビューの恩恵を受けることができ、レイアウトがより複雑になった場合の管理がはるかに簡単になります。

于 2012-11-26T02:36:33.867 に答える
0

あなたの問題はこれです:

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

このようにsetContentViewを設定すると、xmlファイルをどのように変更しても、同じ結果が得られます。サイズが20のテキスト。
新しいレイアウトを作成して、その上にTextviewを追加してみてください。

<?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);
于 2012-11-26T02:37:21.883 に答える