如何在屏幕顶部下方显示LinearLayout 100px?

时间:2012-03-09 15:01:28

标签: android android-linearlayout android-framelayout

我有一个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);     

2 个答案:

答案 0 :(得分:2)

问题是您使用的是padding而不是margins。任何填充都会获得视图的背景颜色,边距则不会 您必须将边距添加到您为视图提供的LayoutParams中。

答案 1 :(得分:0)

如果使用XML布局,这将非常简单。您还可以查看正在创建的内容并设置单个属性。这也允许您将逻辑与视图分开并遵循MVVM设计模式,以便将来更新更容易执行,从而为您提供更灵活的系统。