是一个编程创建的视图,在java中分配一个Integer ID



假设我使用以下代码创建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的答案。

相关内容

最新更新