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

问题描述:

我有一个FrameLayout(所有的屏幕都是FL),在屏幕顶部有一个openGLview和一个标题图像。现在我想显示一个由LinearLayout创建的两个按钮的菜单。如何在屏幕顶部下方显示100px的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);  
+0

请问为什么不用XML创建布局? – Jave 2012-03-09 13:33:03

+0

我想学习java布局方式 – NullPointerException 2012-03-09 14:50:46

+2

[如何显示LinearLayout菜单对齐到FrameLayout的右侧,屏幕顶部下方100px]? 请不要发布第二个问题,如果你不首先获得足够的答案。 (http://*.com/questions/9634536/how-to-display-a-linearlayout-menu-aligned-to-the-right-of-a-framelayout-and-100) – Jave 2012-03-09 15:09:00

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

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

+0

请告诉我如何用java代码实现这一点,而不是用xml布局 – NullPointerException 2012-03-09 14:50:34