-1

我有一个 FrameLayout(所有屏幕都是 FL),它在屏幕顶部有一个 openGLview 和一个标题图像。现在我想显示两个按钮的菜单,使用 LinearLayout 创建。

我的 LL 菜单必须浮动在框架布局上,低于屏幕顶部 100 像素。

我怎样才能做到这一点?我尝试使用此代码,但无法正常工作,菜单显示在屏幕顶部下方 100 像素处,但它正在绘制菜单的上部,我不希望这样,我需要菜单的上部它没有涂上菜单的颜色。必须是浮动菜单。

我确信还有另一种方法可以在屏幕顶部下方绘制菜单 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);     
4

2 回答 2

2

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

于 2012-03-09T15:11:19.380 回答
0

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

于 2012-03-09T14:29:38.607 回答