1

因此,我需要为两者添加layout_gravityTextViewsButtons并获取它们的唯一 ID。有没有办法从代码中添加一个 id?to my code **inside** the code itself like, dynamically adding them inside aloop. My problem is setting the

更新

TextViews我需要and的 idButtons才能进入R.id文件夹,这可能吗?

4

2 回答 2

2

不,不可能在运行时生成相对于 R.id 的其余部分仍然被认为是唯一的 id,抱歉。您可以使用该方法在 Java 代码中将视图的 ID 设置为您喜欢的任何值setId(),但是,这里有一些您可能会考虑的选项:

  1. 将动态视图的 ID 设置为 0、1、2、3 甚至 100、101、102、103 等值。您可能已经注意到,R.id 生成的值总是以 0x7F 开头,因此非常您不太可能选择会发生冲突的值。
  2. 使用视图的哈希码,例如view.setId( view.hashCode() )生成更唯一的 ID。这就是RadioGroup它的孩子没有 ID 时的情况。
  3. res/values/ids.xml您可以通过创建(请参阅 SDK 文章)提前生成未附加到视图的 R.id 值。然后可以view.setId(R.id.xxx)在运行时添加这些。

就您的layout_gravity问题而言,这可能是因为以layout_XML 为前缀的值LayoutParams是实际视图的属性,而不是实际视图的属性。您需要将该值添加到LayoutParams对象并在新视图上设置这些参数,例如:

Button button;
LinearLayout layout;
LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.gravity = Gravity.CENTER;

//Option #1 to add
layout.addView(button, lp);

//Option #2 to add
button.setLayoutParams(lp);
layout.addView(button);

高温高压

于 2012-05-04T18:38:09.440 回答
2
// sets button properties
    btn = new ImageButton(this);
    btn.setId(id);
    btn.setTag(Image_Name);

    btn.setBackgroundColor(Color.TRANSPARENT);
    btn.setAdjustViewBounds(true);

    btn.setImageBitmap(bmp);

    btn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

        // Implement Click Listener

        }
    });

你可以像这样的任何组件。

于 2012-05-04T18:09:47.000 回答