我对 Android 很陌生。
我想创建一个动态的 OnClick 按钮功能。
OnClick上面的“+”,它应该创建一个其他层,如下所示。
我的困惑,我的整个设计 UI 都在 layout.xml 中。
我们如何在“+”按钮的 OnClick 上在我们的 UI 中包含另一层。
任何输入都会有所帮助。
谢谢 !!!
我对 Android 很陌生。
我想创建一个动态的 OnClick 按钮功能。
OnClick上面的“+”,它应该创建一个其他层,如下所示。
我的困惑,我的整个设计 UI 都在 layout.xml 中。
我们如何在“+”按钮的 OnClick 上在我们的 UI 中包含另一层。
任何输入都会有所帮助。
谢谢 !!!
您可以以编程方式执行此操作。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());
}
沿着这些思路,我显然忽略了格式化并将布局参数添加到视图中,但你明白了。
在您的 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());
}
}