是否以编程方式创建的View在R.java中分配了一个Integer ID?

时间:2014-05-21 09:00:59

标签: android

假设我使用以下代码创建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);

1 个答案:

答案 0 :(得分:1)

视图有一个常量来标记它们没有标识View.NO_ID

我不确定您要实现的目标,但会为新视图分配ID View.NO_ID

但是,如果您想生成ID,可以使用View.generateViewId()

修改

根据您的评论,我正在编辑我的答案。 API级别17下面不存在View.generateViewId(),此问题" how to avoid ID conflicts?"包含一个代码的答案,用于生成API 17以下的ID。