假设我使用以下代码创建EditText并将其添加到以编程方式创建的LinearLayout中,是否会为其分配一些ID,还是需要使用setId()手动分配一个ID?
我问这个问题是因为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);
答案 0 :(得分:1)
视图有一个常量来标记它们没有标识View.NO_ID
。
我不确定您要实现的目标,但会为新视图分配ID View.NO_ID
。
但是,如果您想生成ID,可以使用View.generateViewId()
。
修改强>
根据您的评论,我正在编辑我的答案。 API级别17下面不存在View.generateViewId()
,此问题" how to avoid ID conflicts?"包含一个代码的答案,用于生成API 17以下的ID。