【问题标题】:How to create buttons on pressing a button?如何在按下按钮时创建按钮?
【发布时间】:2013-11-28 16:48:51
【问题描述】:

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

 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 应用程序中很容易做到这一点,但在这里我遇到了麻烦。

【问题讨论】:

  • 使用按钮 btn = new Button(getApplicationContext());
  • 请发布您的完整相关代码和 logcat 错误..

标签: java android


【解决方案1】:

使用

Button btn = new Button(getApplicationContext());

Button btn = new Button(ActivityName.this);

而不是

 Button btn = new Button(this);

因为 Button 需要上下文。而在 OnClick 中,Activity 的上下文是不可访问的。

【讨论】:

  • 如果我想使用自己的方法怎么办?我一定要使用 clickListener 吗?
  • 如果您希望在单击按钮时添加它。您需要实现 Click Listener
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    只需在 new 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)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      相关资源
      最近更新 更多