我有一个FrameLayout(所有屏幕都是FL),它有一个openGLview和屏幕顶部的标题图像。现在我想显示一个使用LinearLayout创建的两个按钮的菜单。
我的LL菜单必须浮在framelayout上,比屏幕顶部低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);
答案 0 :(得分:2)
问题是您使用的是padding
而不是margins
。任何填充都会获得视图的背景颜色,边距则不会
您必须将边距添加到您为视图提供的LayoutParams中。
答案 1 :(得分:0)
如果使用XML布局,这将非常简单。您还可以查看正在创建的内容并设置单个属性。这也允许您将逻辑与视图分开并遵循MVVM设计模式,以便将来更新更容易执行,从而为您提供更灵活的系统。