我正在开发一个我需要创建多个应用程序的应用程序
动态EditText
和Spinner。所以我开始寻找
解决方案,因为我没有权限使用隐形
XML文件中的属性。我搜索了很多,并得到了一些例子
仅限于 stackoverflow 。我关注它们并创建了这个程序。
**MainActivity.java code**
public class MainActivity extends Activity {
RelativeLayout containerLayout;
static int totalEditTexts = 0;
Button button;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
containerLayout = (RelativeLayout)findViewById(R.id.relative1);
button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
totalEditTexts++;
if (totalEditTexts > 100)
return;
EditText editText = new EditText(getBaseContext());
containerLayout.addView(editText);
editText.setGravity(Gravity.RIGHT);
RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) editText.getLayoutParams();
layoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT;
layoutParams.setMargins(23, 34, 0, 0);
// RelativeLayout.LayoutParams()
editText.setLayoutParams(layoutParams);
//if you want to identify the created editTexts, set a tag, like below
editText.setTag("EditText" + totalEditTexts);
}
});
} }
当我运行此代码时,它会在单击按钮时创建EditText。但只有一次。我不知道之后发生了什么。是创建新的EditText还是重叠旧的EditText,否则它不会创建多个EditText。
任何人都可以向我解释我现在必须做些什么来解决这个问题。
答案 0 :(得分:8)
我已经解决了我的问题,只需将 RelativeLayout 替换为 LinearLayout
答案 1 :(得分:5)
使用RelativeLayout并动态添加内容的问题是,如果您未设置视图的相对位置,则它会相互重叠。因此,当您单击并添加新视图时,将添加新视图,但它们会相互重叠。但是添加LinearLayout,视图可以在彼此下方看到,因为您可以将方向设置为垂直。