我用谷歌搜索了几个小时但无法提出解决方案......我发现了许多类似的问题和答案,但没有一个能为我工作。
我想做什么: 我有一个视图,我用来绘制我的应用程序。 现在我想在我当前画布的“顶部”添加一个布局。布局应包含一个按钮,每边的边距为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);
我做错了什么?
答案 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 提供宽度/高度,并且您不会将其附加到您的视图中。