【问题标题】:Setting android TextViews and Buttons in the code在代码中设置 android TextViews 和 Buttons
【发布时间】:2012-05-04 18:05:32
【问题描述】:

所以我需要为两者添加TextViewsButtonsto my code **inside** the code itself like, dynamically adding them inside aforloop. My problem is setting thelayout_gravity` 并获得它们的唯一ID。有没有办法在代码中添加一个 id?

更新

我需要TextViewsButtons 的ID 才能进入R.id 文件夹,这可能吗?

【问题讨论】:

  • 更新:如果它们存在于您的资源文件夹中,则它们不是动态创建的;它们已经存在...
  • 根据答案和 cmets,在此处准确告诉我们您想要达到的目标似乎是有益的。我无法想象你为什么需要在 R.id 文件夹中注册 ID,因为这通常在设计时使用,而不是运行时,那么你怎么知道要查找什么?

标签: android android-layout textview android-button


【解决方案1】:
// 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

        }
    });

您可以使用任何类似的组件。

【讨论】:

  • btn.setId(id) 中的“id”字段是什么?
  • 如何将 id 设置在我的 R.id 文件夹中?
  • 您选择的 id 可以是任何在循环迭代时递增的整数。
  • 它没有在 R.java 文件中设置。
  • 否,如果你想设置任何动态组件,它不会在 R.java 中注册
【解决方案2】:

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

  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 (see SDK article) 提前生成未附加到视图的 R.id 值。然后可以在运行时使用view.setId(R.id.xxx) 添加这些。

就您的layout_gravity 问题而言,这可能是因为XML 中以layout_ 为前缀的值是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);

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多