动态创建布局

时间:2013-04-10 13:51:23

标签: android android-layout

我用谷歌搜索了几个小时但无法提出解决方案......我发现了许多类似的问题和答案,但没有一个能为我工作。

我想做什么: 我有一个视图,我用来绘制我的应用程序。 现在我想在我当前画布的“顶部”添加一个布局。布局应包含一个按钮,每边的边距为20像素。我找到了类似下面代码的代码片段,但屏幕上没有任何反应。没有按钮。什么都没有。

这是我正在使用的代码:

LinearLayout bottomBar = new LinearLayout(this);
bottomBar.setOrientation(LinearLayout.VERTICAL);

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(20, 20, 20, 20);

Button button = new Button(this);
button.setText("text");
bottomBar.addView(button, layoutParams);
bottomBar.draw(canvas);

我做错了什么?

2 个答案:

答案 0 :(得分:3)

您创建布局LinearLayout bottomBar = new LinearLayout(this);并不意味着它已附加到屏幕上。

另外,请勿在你的酒吧上画画。将它包含在屏幕中后,系统会为您打电话。

比方说,你的XML(用setContentView膨胀)有一个FrameLayout,其ID是R.id.frame,那么你可以这样做:

LinearLayout bottomBar = new LinearLayout(this);
bottomBar.setOrientation(LinearLayout.VERTICAL);

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(20, 20, 20, 20);

Button button = new Button(this);
button.setText("text");
bottomBar.addView(button, layoutParams);

FrameLayout frame = (FrameLayout) findViewById(R.id.frame);
frame.addView(bottomBar);

你看......你必须在屏幕上已经存在的视图组中调用'addView'。

或者,您可以致电:setContentView(bottomBar);通过bottomBar替换屏幕上的内容

答案 1 :(得分:0)

您没有为 LinearLayout 提供宽度/高度,并且您不会将其附加到您的视图中。