ここで、FingerPaint api デモにボタンを動的に追加したいと思います。しかし、問題は、Java ファイルで動的にレイアウトを作成することに慣れていないことです。このクラスを実装してタイトルバーにボタンを追加する方法を誰かが知っていますか? コードサンプルをいただければ幸いです。
2426 次
1 に答える
2
説明:
1) 動的 GUI コンポーネントを挿入するレイアウト コンテナーへの参照を取得します。コンテナーが動的に作成された場合は、既にそのコンテナーへの参照があります。xml レイアウトの場合は、 で参照を取得できますfindViewById
。
2) 動的コンポーネントを作成します。コンストラクターにコンテキストを渡す必要があります: Use this
.
3) 作成したコンポーネントのプロパティを設定します。
4)container.addView(component)
コンポーネントをコンテナに動的に追加するために使用します。
ステップバイステップのデモ:
test.test
1) プロジェクト アシスタントを使用して、デフォルトのオプション、パッケージ、Main
アクティビティを含む新しい Android プロジェクトを作成します。
2)以下のようにres/layout/main.xml
ファイルを編集します。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="垂直" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:orientation="垂直" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/layoutId" > </LinearLayout> </LinearLayout>
3)以下のようにsrc/test.test/Main.java
ファイルを編集します。
パッケージ test.test; android.app.Activity をインポートします。 android.os.Bundle をインポートします。 android.view.View をインポートします。 android.view.View.OnClickListener をインポートします。 android.widget.Button をインポートします。 android.widget.LinearLayout をインポートします。 android.widget.Toast をインポートします。 public class Main extends Activity { /** アクティビティが最初に作成されたときに呼び出されます。*/ @オーバーライド public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); addDynamicButton(); } /** * 動的ボタンを追加します。 */ プライベート ボイド addDynamicButton() { // ボタンを動的に作成する Button btn = new Button(this); // ボタンのプロパティを設定します btn.setText("私は動的です。私をクリックしてください。"); btn.setOnClickListener(new OnClickListener() { @オーバーライド public void onClick(View v) { トースト toast = Toast.makeText(Main.this, "Yo!", Toast.LENGTH_LONG); toast.show(); } }); // コンテナ レイアウトへの参照を取得します LinearLayout コンテナ = (LinearLayout)findViewById(R.id.layoutId); // GUI に動的ボタンを追加します container.addView(btn); } }
4) Android アプリケーションとしてコンパイルおよび実行します。これで、どのように機能するかがわかったので、この手法を使用して、任意の種類のコンポーネントを任意のレイアウト コンテナーに追加できます。
于 2011-05-10T08:38:49.487 に答える