假设我使用以下代码创建EditText并将其添加到以编程方式创建的LinearLayout,它会被分配一些ID还是我需要使用setId()手动分配一个?
我问这个问题是因为Android不可能给两个不同的视图分配相同的id,而如果我们自己这样做,类似的事情可能会发生。
LayoutParams fparams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 5.0f);
LayoutParams tvparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
LayoutParams btparams = new LayoutParams(25, 25);
first.setLayoutParams(fparams);
first.setOrientation(LinearLayout.HORIZONTAL);
EditText tv = new EditText(this);
tvparams.weight = 4.97f;
tv.setLayoutParams(tvparams);
tv.setHint("Destination Address / Postcode");
Button bt = new Button(this);
bt.setBackground(getResources().getDrawable(R.drawable.minus));
bt.setTextColor(Color.parseColor("#ffffff"));
bt.setTextSize(12f);
btparams.weight = 0.03f;
bt.setLayoutParams(btparams);
first.addView(bt);
first.addView(tv);
main.addView(first);
有一个常量可以让视图标记为没有id的View.NO_ID
。
我不确定你想要实现什么,但新视图被分配id View.NO_ID
。
但是,如果你想生成id,你可以使用View.generateViewId()
。
根据你的评论,我正在编辑我的答案。
View.generateViewId()
在API级别17以下不存在,这个问题"如何避免ID冲突?"包含了一个用代码生成API级别17以下ID的答案。