如何按下按钮创建按钮?

时间:2013-11-28 08:37:53

标签: java android

我使用以下代码使用按钮名称数组在水平布局中创建按钮:

 LinearLayout tabView = (LinearLayout) findViewById(R.id.tabView);
        tabView.setOrientation(LinearLayout.HORIZONTAL);  //Can also be done in xml by android:orientation="vertical"
            for (int i = 0; i < tabButtonNames.length; i++) {
                Button btnTag = new Button(this);
                btnTag.setText(tabButtonNames[i]);
                btnTag.setWidth(50);
                btnTag.setHeight(14);
                btnTag.setTextSize(8);
                btnTag.setId(i);
                btnTag.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        ---the code TODO
                });
                tabView.addView(btnTag);
            }

已创建它们但我无法使用setWidthsetHeightLayoutParam更改按钮的高度和宽度。然后在按下按钮时,我想使用按钮名称数组在垂直布局中创建更多按钮的列表。我在onClick方法中使用了与上面相同的代码,但应用程序在按下按钮时崩溃了。此外,Button btn=new Button(this)无法在onClick中使用。 我很容易在i-Pad应用程序中完成此操作,但在这里我遇到了麻烦。

3 个答案:

答案 0 :(得分:6)

使用

Button btn = new Button(getApplicationContext());

OR

Button btn = new Button(ActivityName.this);

而不是

 Button btn = new Button(this);

按钮需要上下文。在OnClick中,无法访问Activity的上下文。

答案 1 :(得分:1)

Button btn=new Button(this)实际上是指你的clicklistiner,你必须引用你的class, Button btn=new Button(classname.this)或在clickListener之外创建一个简单的函数。

答案 2 :(得分:1)

只需在新的Button()中传递上下文并设置布局参数而不是高度和宽度

   for (int i = 0; i < tabButtonNames.length; i++) {
                Button btnTag = new Button(<-Context->);//You need to pass context just write <ActivityName>.this
                btnTag.setText(tabButtonNames[i]);
                LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(<width>,<height>);(50,40)


                //btnTag.setWidth(50);
                //btnTag.setHeight(14);
                btnTag.setTextSize(8);
                btnTag.setId(i);
                btnTag.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {

                        }



                });
                tabView.addView(btnTag);
                btnTag.setLayoutParams(params)
}
相关问题