我有一个FrameLayout(所有屏幕都是FL),它在屏幕顶部有一个openGLview和一个标题图像。现在我想显示一个由两个按钮组成的菜单,用LinearLayout创建。
我的LL菜单必须浮动在框架布局上,屏幕顶部下方100px。
我怎样才能做到这一点?我尝试过这个代码,但没有正常工作,菜单显示在屏幕顶部下方100px,但它正在绘制菜单的上部,我不希望这样,我需要菜单的上部没有绘制菜单的颜色。必须是浮动菜单
我相信还有另一种方法可以在屏幕顶部下方100px处绘制菜单,而不用用菜单的颜色绘制菜单的上部。
我的代码(上半部分颜色问题):
///////////////sub menu de shareit////////////////
LinearLayout sharellContainer = new LinearLayout(this);
sharellContainer.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout sharell = new LinearLayout(this);
sharell.setOrientation(LinearLayout.VERTICAL);
sharell.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
//LinearLayout.LayoutParams sharellParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
//sharellParams.gravity=Gravity.CENTER;
sharell.setPadding(10, shareit.getHeight()+80, 10, 10);
sharell.setBackgroundColor(0xFF383838);
//sharell.setLayoutParams(sharellParams);
share= new ImageButton(this);
selector(share, R.drawable.but_share_up,R.drawable.but_share_down);
LinearLayout.LayoutParams shareParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
shareParams.setMargins(0, 0, 0, 10); //dejo un espacio entre este botón y el siguiente
share.setLayoutParams(shareParams);
sharell.addView(share);
web= new ImageButton(this);
selector(web, R.drawable.but_web_up,R.drawable.but_web_down);
sharell.addView(web);
sharellContainer.addView(sharell);
sharellContainer.setGravity(Gravity.RIGHT);
//////////////////////////////////////////////////
。.
fl.addView(squareGLSurfaceView);
fl.addView(rl);
fl.addView(sharellContainer);
setContentView(fl);
问题是您使用的是padding
而不是margins
。任何填充都会获得视图的背景色,而边距则不会
您必须将页边距添加到为视图提供的LayoutParams中。
如果使用XML布局,这将非常容易。您还可以查看正在创建的内容并设置各个特性。这还允许您将逻辑与视图分离,并遵循MVVM设计模式,以便将来更容易执行更新,从而为您提供更灵活的系统。