0

私はAndroidを初めて使用します。

動的なOnClickボタン機能を作成したいと思います。

ここに画像の説明を入力してください

上記の「+」をクリックすると、以下のような別のレイヤーが作成されます。

ここに画像の説明を入力してください

私の混乱、私のデザインUI全体はlayout.xmlにあります。

「+」ボタンのOnClickでUIに別のレイヤーを含めるにはどうすればよいですか。

任意の入力が役立ちます。

ありがとう !!!

4

2 に答える 2

1

これはプログラムで行うことができます。XMLは静的レイアウト用です。

すみません、疑似Android:

private LinearLayout root;

public void onCreate(Bundle b){

    LinearLayout root = new LinearLayout(this);

    root.addChild(createGlucoseReadingView());

    setContentView(root);

}

private View createGlucoseReadingView() {
   LinearLayout glucoseRoot = new LinearLayout(this);
   glucoseRoot.addChild(new TextView(this));
   return glucoseRoot;
}

public void onPlusClick(View button){
   root.addChild(createGlucoseReadingView());
}

それらの線に沿った何か、私は明らかにフォーマットとビューへのレイアウトパラメータの追加を省略しました、しかしあなたは考えを理解します。

于 2012-12-30T22:31:23.097 に答える
0

XMLには、実行時Vertical Linear Layoutに追加および削除するものがありEditTextsます。ここでは、デモで使用したコードを示しました。使用法を処理および維持するため。

[追加とマイナス]ボタンをクリックしてクリックします

    public void onClick(View view) {
        super.onClick(view);
        switch (view.getId()) {

        case R.id.btnadd:
            createTextview(counter);
            counter++;
            if (counter > 3) {
                btnAdd.setVisibility(View.GONE);
                btnRemove.setVisibility(View.VISIBLE);
            }
            break;
        case R.id.btnremove:
            removeView(counter);
            txtoption[counter - 1] = null;
            counter--;
            if (counter < 3) {
                btnAdd.setVisibility(View.VISIBLE);
                btnRemove.setVisibility(View.GONE);
            }

            break;
        }
    }

ビューを作成および削除する機能

private void createTextview(int index) {
    txtoption[index] = new EditText(this);
    txtoption[index].setSingleLine(true);
    LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
            LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
    param.bottomMargin = 10;
    txtoption[index].setLayoutParams(param);
    txtoption[index].setBackgroundResource(R.drawable.textbox);
    txtoption[index].setTypeface(ttfDroidSherif);
    lnpolloptions.addView(txtoption[index]);

}

private void removeView(int index) {
    lnpolloptions.removeView(txtoption[index - 1]);
}

すべてのedittextの子を含む垂直LinearLayout

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

実行時に作成または削除される編集テキストの配列

private EditText[] txtoption = new EditText[4];

送信をクリックして、各テキストボックスから値を取得します

            int length = txtoption.length;
            for (int i = 0; i < length; i++) {
                if (txtoption[i] != null) {
                    Log.i("Value",""+txtoption[i].getText());
                }
            }
于 2012-12-31T06:22:50.763 に答える