在代码中设置android文本视图和按钮

在代码中设置android文本视图和按钮,android,android-layout,textview,android-button,Android,Android Layout,Textview,Android Button,因此,我需要将textview和按钮添加到我的代码**中**代码本身,就像在循环中动态添加它们一样。我的问题是为两者设置layou\u gravity`并获得唯一的id。有没有办法在代码中添加id 更新 我需要textview和按钮的id才能进入R.id文件夹,这可能吗 // sets button properties btn = new ImageButton(this); btn.setId(id); btn.setTag(Image_Name); btn

因此,我需要将
textview
按钮
添加到我的代码**中**代码本身,就像在
循环中动态添加它们一样。我的问题是为两者设置
layou\u gravity`并获得唯一的id。有没有办法在代码中添加id

更新

我需要
textview
按钮的id才能进入
R.id
文件夹,这可能吗

// 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

        }
    });
您可以使用任何类似于这些的组件


您可以使用任何类似于这些的组件

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

  • 将动态视图的ID设置为0、1、2、3甚至100、101、102、103等值。您可能已经注意到,R.ID生成的值始终以0x7F开头,因此您不太可能选择会发生冲突的值
  • 使用视图的hashcode,一个la
    view.setId(view.hashcode())
    来生成一个更唯一的ID。这就是
    RadioGroup的子对象没有ID时所做的
  • 通过创建
    res/values/ids.xml
    (),可以提前生成未附加到视图的R.id值。然后可以在运行时使用
    view.setId(R.id.xxx)
    添加这些属性
  • 就您的
    layout\u重力问题而言,这可能是因为XML中以
    layout\u
    为前缀的值是
    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

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

  • 将动态视图的ID设置为0、1、2、3甚至100、101、102、103等值。您可能已经注意到,R.ID生成的值始终以0x7F开头,因此您不太可能选择会发生冲突的值
  • 使用视图的hashcode,一个la
    view.setId(view.hashcode())
    来生成一个更唯一的ID。这就是
    RadioGroup的子对象没有ID时所做的
  • 通过创建
    res/values/ids.xml
    (),可以提前生成未附加到视图的R.id值。然后可以在运行时使用
    view.setId(R.id.xxx)
    添加这些属性
  • 就您的
    layout\u重力问题而言,这可能是因为XML中以
    layout\u
    为前缀的值是
    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

    btn.setId(id)中的“id”字段是什么?我如何将id设置在我的R.id文件夹中?您可以选择id可以是任何在循环迭代时递增的整数。它不能在R.java文件中设置。否如果您要设置任何动态组件,它将不会在R.java中注册btn.setId(id)中的“id”字段是什么?如何将id设置在我的R.id文件夹中?您可以选择id可以是循环迭代时递增的任何整数。它不能设置在R.java文件中。否如果您想设置任何动态组件,它将不会在R.javaDuplicate中注册:更新:如果它们存在于资源文件夹中,则它们不会动态创建;它们已经存在了…根据答案和评论,告诉我们你在这里想要实现什么似乎是有益的。我无法想象为什么您需要在R.ID文件夹中注册ID,因为它通常在设计时使用,而不是在运行时使用,所以您如何知道要查找什么?复制:更新:如果它们存在于资源文件夹中,则不会动态创建它们;它们已经存在了…根据答案和评论,告诉我们你在这里想要实现什么似乎是有益的。我无法想象为什么您需要在R.ID文件夹中注册ID,因为它通常在设计时使用,而不是在运行时使用,那么您如何知道要查找什么呢?