0

我对 Android 很陌生。

我想创建一个动态的 OnClick 按钮功能。

在此处输入图像描述

OnClick上面的“+”,它应该创建一个其他层,如下所示。

在此处输入图像描述

我的困惑,我的整个设计 UI 都在 layout.xml 中。

我们如何在“+”按钮的 OnClick 上在我们的 UI 中包含另一层。

任何输入都会有所帮助。

谢谢 !!!

4

2 回答 2

1

您可以以编程方式执行此操作。XML 用于静态布局。

原谅我的伪安卓:

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,这里我向您展示了我在演示中使用的代码。处理和维护使用。

Onclick 您的加减按钮单击

    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]);
}

您的垂直 LinearLayout 包含所有 edittext 子项

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

要在运行时创建或删除的编辑文本数组

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

Onclick 提交以从每个文本框中获取值

            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 回答