2011-02-09 9 views
0

xmlを使用して動的ボタンを配置する方法。 xmlからボタンの位置を取り出して、画面に配置したいと考えています。アンドロイドに動的ボタンを配置する方法

+2

http://sree.cc/google/android/dynamically-add-controls-in-android ...これは「Android搭載の動的ボタンを配置する方法」の最初のGoogleの結果でした –

答えて

1

動的ではどういう意味ですか?

filename.xmlという名前のxmlファイルを作成し、これを配置します。必要に応じて、ドロアブルを変更します。これはbt_returnとbt_returnpressです。

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/bt_return" android:state_pressed="false" /> 
    <item android:drawable="@drawable/bt_returnpress" android:state_pressed="true" /> 
    <item android:drawable="@drawable/bt_return" android:state_focused="false" /> 
    <item android:drawable="@drawable/bt_returnpress" android:state_focused="true" /> 
</selector> 

次に、必要な動的ボタンの背景にfilename.xmlを割り当てます。

+0

ok..iはxmlファイル内のボタンの位置を持っています。どのように呼び出すのですか? – Piyush

+0

いいえ、上記はドロウアブルです。それをドロウアブルフォルダに入れます。そしてあなたのレイアウトでは、ボタンの中で背景をdrawableに設定します。 – Hades

1

もし私が間違っていないとすれば、ビューを実際にビューに動的に追加したいのですか?

ボタンを追加する親ビューを取得する必要がある場合は、ボタンを作成して追加します。

たとえば、LinearLayoutが既に定義されています。

のLinearLayoutコントロール= (android.widget.LinearLayout) findViewById(R.id.id_of_your_layout)。

ボタンボタン=新しいボタン(コンテキスト)。

controls.add(button);

それです。あなたのコード内で次に

<LinearLayout android:id="@+id/layoutbase" 
android:layout_width="fill_parent" android:layout_height="wrap_content" /> 

:あなたはまた、OnClickListenerを実装する必要が

LinearLayout layoutbase = 
    (LinearLayout) findViewById(R.id.layoutbase); 

LinearLayout.LayoutParams mylayout = new LinearLayout.LayoutParams(
     LinearLayout.LayoutParams.FILL_PARENT, 
     LinearLayout.LayoutParams.WRAP_CONTENT); 

Button mybutton = new Button(this); 
mybutton.setText("Button!"); 
mybutton.setTag("mybutton"); 
mybutton.setId(999); 
mybutton.setLayoutParams(mylayout); 
mybutton.setOnClickListener(this); 

:あなたのXMLレイアウトファイルで

0

@Override 
public void onClick(View v) { 
    String tag = (String) v.getTag(); 
    if (tag == "mybutton") { 
     // do some stuff 
    } 
} 

OR

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
    case 999: 
     // do some stuff 
     break; 
    default: 
    } 
} 
関連する問題