在代码中设置android TextViews和Buttons

时间:2012-05-04 18:05:32

标签: android android-layout textview android-button

所以我需要为TextViews layout_gravity`添加to my code **inside** the code itself like, dynamically adding them inside a按钮loop. My problem is setting the,并为它们添加唯一ID。有没有办法在代码中添加id?

更新

我需要TextViewsButtons的ID进入R.id文件夹,是否可能?

2 个答案:

答案 0 :(得分: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

        }
    });

你可以使用这些组件。

答案 1 :(得分:2)

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

  1. 将动态视图的ID设置为0,1,2,3甚至100,101,102,103等值。您可能已经注意到R.id生成的值始终以0x7F开头,因此它你很难选择会碰撞的价值。
  2. 使用视图的哈希码,la view.setId( view.hashCode() )生成更多唯一ID。这是RadioGroup当孩子没有身份证时所做的事情。
  3. 您可以通过创建res/values/ids.xmlsee SDK article)提前生成未附加到视图的R.id值。然后可以在运行时使用view.setId(R.id.xxx)添加这些内容。
  4. layout_gravity问题而言,这可能是因为XML中以layout_为前缀的值为LayoutParams,而不是实际视图的属性。您需要将该值添加到LayoutParams对象并在新视图上设置这些参数,la:

    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);
    

    HTH