Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中以编程方式向线性布局添加按钮_Android_Android Linearlayout - Fatal编程技术网

如何在android中以编程方式向线性布局添加按钮

如何在android中以编程方式向线性布局添加按钮,android,android-linearlayout,Android,Android Linearlayout,如何在第二个受保护的void finishButton中使用protected void onCreate中的linearLayout和params变量?我需要将finishButton添加到linearLayout。这是我的密码: public class MainActivity extends AppCompatActivity { public static int score = 0; @Override protected void onCreate(Bu

如何在第二个受保护的void finishButton中使用protected void onCreate中的linearLayout和params变量?我需要将finishButton添加到linearLayout。这是我的密码:

public class MainActivity extends AppCompatActivity {
    public static int score = 0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ScrollView scrollView = (ScrollView) findViewById(R.id.scrollView);

        final LinearLayout linearLayout = new LinearLayout(this);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        linearLayout.setLayoutParams(params);
        linearLayout.setOrientation(linearLayout.VERTICAL);
        linearLayout.setPadding(0, 110, 0, 0);
        scrollView.addView(linearLayout);

        TextView iq_Test_Title = new TextView(this);
        iq_Test_Title.setText("Text");
        iq_Test_Title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
        iq_Test_Title.setGravity(Gravity.CENTER);
        iq_Test_Title.setTextColor(Color.RED);
        linearLayout.addView(iq_Test_Title);

        finishButton();

        // other code
    }

    protected void finishButton() {
        final Button finishButton = new Button(this);
        finishButton.setText(R.string.finish_button);
        finishButton.setLayoutParams(params);
        linearLayout.addView(finishButton);

        finishButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finishButton.setEnabled(false);
            }
        });
    }
}

谢谢

要访问
finishButton
方法中的视图,只需将其设置为类级变量:

public class MyActivity...
   private LinearLayout mLinearLayout;

   protected void onCreate(..){
      mLinearLayout = new LinearLayout(this);
      ...
   }

   private void finishButton(){
      ...
      mLinearLayout.addView(..);
   }
}

如果我理解正确,您可能希望将按钮从finishButton()返回给调用方。然后将其添加到onCreate中的视图中

将您的finishButton声明更改为

protected Button finishButton()
配置完成后,添加以下行:

return finishButton;
在这个方法的末尾。然后在onCreate中:

linearLayout.addView(finishButton());

我使用了
linearLayout.addView(iq\u Test\u Title)onCreate()
中的代码更改为引用相同的线性布局。在该方法内部,将
final LinearLayout LinearLayout
更改为仅仅
LinearLayout
,以便它们引用同一个对象。我用您的规范再次重写了代码,现在代码正常了。@AlexM。很高兴我能帮忙。如果这个答案解决了您的问题,请点击我的答案旁边的复选标记接受它。这有助于将来偶然发现这个问题的读者。首先将文本添加到版面,然后将版面添加到scrollview。也许这会有帮助。还要记住,scrollview不能包含多个子项。请将LinearLayout视为Viewgroup“Viewgroup=(Viewgroup)LinearLayout;”,然后尝试将按钮添加为视图。问题不是我无法添加按钮,我无法在第二个私有空间中看到LinearLayout,要添加它,因为线性布局是在第一行中声明的。如何在第二个窗口中使用linearLayout?