如何在Android中为Button By Dynamic Creations提供id?

时间:2011-08-27 09:09:09

标签: java android button

我试图通过动态创建一个按钮,我也创建了。现在我想编写单击事件的函数所以我需要Button的ID。我不知道如何为按钮动态创建id.Guide me 提前致谢 在这里我的编码

        ScrollView sv = new ScrollView(this);
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.HORIZONTAL);
        sv.addView(ll);
        Button main=new Button(this);
        CharSequence value="Main +";
        main.setText(value);
        ll.addView(main);
           }
        this.setContentView(sv);
    }

3 个答案:

答案 0 :(得分:4)

您可以通过

设置任何控件的ID
btn.setId(integer value) at runtime.

如果您不想设置ID,则没有问题

另外,当您创建新视图时,您必须设置其layout parameters(Height, Width)

例如

btn.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

所以整个过程就像

Button btn = new Button(Context);
btn.setId(1);
btn.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
btn.setText("Dynamic button");
btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
             Toast.makeText(v.getContext(),"Dynamic button is clicked", 3000).show();
            }
        });

答案 1 :(得分:2)

试试这段代码。

Button text = new Button(this);

text.setId(1);
text.setText("text here");
ll.addView(text);
text.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        int id = arg0.getId(); // you get ID of your dynamic button
        Toast.makeText(getApplicationContext(), "Dynamic textview!", Toast.LENGTH_SHORT).show();
    }
});

在那个“ll”中是一个布局和那个添加按钮。 之后,您可以随时使用clickListener代码单击执行。

答案 2 :(得分:0)

你可以简单地使用这个

Button main= new Button(this);
            main.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                }
            });

并且main.setId(pass here int value);设置了ID,但我认为你不需要它