2016-06-01 20 views
1

XMLから既存のレイアウトを読み込み、動的にボタンとサークルを作成しようとしています。サークルを作成する目的がXMLに含めることができない理由です動的に、実際には次のコードは私が作成したいもののスニペットです。XMLからレイアウトをロードしてビューを追加する

私はこれをやっていることを知っています(レイアウトを追加する)が間違っていますが、多くのインターネットコンテンツを読んだ後、私は助けを求めるので自分ではできませんでした。この質問にrellevantされていないdrawCircleの

... onDraw(){ 

    canvas.drawCircle(x, y, radius, paint); 

    } 

パラメータ:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_etest); 
    LayoutInflater inflater; 
    inflater = this.getSystemService 
    (Context.LAYOUT_INFLATER_SERVICE); 

    LinearLayout layout = (LinearLayout)        
    inflater.inflate(R.layout.activity_etest , 
    null); 
    LinearLayout viewGroup = layout; 

    Button b1 = new Button(this); 
    b1.setText("test"); 
    viewGroup.addView(b1); 
    viewGroup.addView(new Circle(this)); 

    } 

} 

表示およびその方法onDraw()から延びている私のクラスのサークルは、構成されています。私は他の場所でそれらを定義しました。

私はまた、XMLを追加します。

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

    <Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="New Button" 
    android:id="@+id/button12" 
    android:layout_gravity="center_horizontal" /> 
</LinearLayout> 
+0

あなたのコンテンツビューのレイアウトとインフレータレイアウトは、二つの異なるレイアウトですなぜですか? – KDeogharkar

+0

はい私の答えを参照してください。それを膨らませるのではなく、idを使って取得する。 – KDeogharkar

答えて

0

あなたxmllinearlayoutのような1つのビューグループを作成し、そのinstanceが、その中にあなたの動的なビューを追加使用します。

activity_etest.xml

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

活動

setContentView(R.layout.activity_etest); 
Linearlayout viewgroup = (LinearLayout)findViewById(R.id.viewg); 

Button b1 = new Button(this); 
    b1.setText("test"); 
    viewGroup.addView(b1); 
    viewGroup.addView(new Circle(this)); 
+0

xmlで提供した行をどのように追加するのですか?私はそれを試して、アプリケーションがクラッシュします。 – NUN

+0

これは単なるスニペットです。あなたのXMLを追加してください。 – KDeogharkar

+0

さて、最初の質問に追加します。 – NUN

関連する問題