如何在android中以编程方式向线性布局添加按钮
如何在第二个受保护的void finishButton中使用protected void onCreate中的linearLayout和params变量?我需要将finishButton添加到linearLayout。这是我的密码:如何在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
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)但是没用。哦,我现在明白了。是否将线性布局添加到滚动视图中?还有,为什么要费心以编程方式而不是在XML中执行这些操作呢?这可能是因为您没有将onCreate()
中的代码更改为引用相同的线性布局。在该方法内部,将final LinearLayout LinearLayout
更改为仅仅LinearLayout
,以便它们引用同一个对象。我用您的规范再次重写了代码,现在代码正常了。@AlexM。很高兴我能帮忙。如果这个答案解决了您的问题,请点击我的答案旁边的复选标记接受它。这有助于将来偶然发现这个问题的读者。首先将文本添加到版面,然后将版面添加到scrollview。也许这会有帮助。还要记住,scrollview不能包含多个子项。请将LinearLayout视为Viewgroup“Viewgroup=(Viewgroup)LinearLayout;”,然后尝试将按钮添加为视图。问题不是我无法添加按钮,我无法在第二个私有空间中看到LinearLayout,要添加它,因为线性布局是在第一行中声明的。如何在第二个窗口中使用linearLayout?