2012-02-26 14 views
0

私は、アンドロイドデモンストレーションの準備をしています。私が書いてみたい最初のアプリの1つは、異なるウィジェット(もちろんビューです)でいっぱいですが、それらを保持するためにレイアウトされています。これは可能ですか、または一度に複数のビュー(ウィジェット)を画面に配置するためにレイアウトを使用する必要がありますか?私は実際にレイアウトを指定haventはこの場合Android - レイアウトを使わずに画面に異なるビュー(ウィジェット)を追加する

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.main); 

    TextView view1 = new TextView(this); 
    view1.setText("I am view one"); 

    setContentView(view1); 




    } 
} 

が、レイアウトを設定せずに、画面上に複数のウィジェットを配置する方法があるように思えるdoes notの:

だから、今の私のような何かを行うことができます。この目的は、レイアウトを使用する理由を示すことです。おそらく、setContentViewメソッドを呼び出すことなく画面にウィジェットを表示する方法があります。

答えて

1

複数のウィジェット/ビューは、ViewGroupという名前のものにのみ追加できます。基本的にすべてのレイアウトがこのクラスを拡張していることは、驚くことではありません。同様に、例えば、 TextViewの場合、ViewGroup(ViewGroupと同じようにViewから継承されます。つまり、階層ツリーの別のブランチにあることを意味します)を継承しません。

つまり、一度に複数のウィジェット/ビューを表示するには、ある種のレイアウトが必要です。 ListActivityまたはListFragmentのようなものを使用しない限り、デフォルトではListViewをルートにしてレイアウトを作成する以外は、常にsetContentView()への明示的な呼び出しが必要です。言われて、あなたの例では、実際に活動に以下のレイアウトを設定するだけのprogrammatical方法であること

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:text="I am view one" /> 
0

あなたはこのようにそれを行うことができます。

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FrameLayout frameLayout = new FrameLayout(this); 

    TextView view1 = new TextView(this); 
    view1.setText("I am view one"); 
    frameLayout.addView(view1); 
    // add more widgets into ViewGroup as you want 

    // then set the viewgroup as content view 
    setContentView(frameLayout); 




    } 
関連する問題