0

这是我的场景。

我有一个按照分辨率 320*480 制作的图像(假设我使用的是 mdpi 移动设备)。我将此图像作为背景添加到相对布局中。

现在我的屏幕有三个主要的东西。

1- Title bar (The standard title bar of android)
2- My relative layout and its sub view image relative layout which is matched parent.
3- My menu bar at the bottom.

现在因为我的图像在菜单栏和标题栏之间被拉伸了。我想让它适合屏幕。下面是我正在使用的代码。

    mainLayout.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

            public void onGlobalLayout() 
        {
           if (notCreated == true)
           {
               notCreated = false;
           }
           else
           {
               mnHeight = mainLayout.getHeight();
               Rect rect = getRawCoordinatesRect(mainLayout);
               h = getWindowManager().getDefaultDisplay().getHeight() -  
                       - rect.top - mainLayout.getHeight();
// rect.top to remove android standard title bar

               RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(image.getWidth(),LayoutParams.MATCH_PARENT);
               params.topMargin = -1 * rect.top;
               params.bottomMargin = -1 * h;
               image.setLayoutParams(params);

       }
    }


});

现在这行不通。一点帮助将不胜感激。

注意:实际上我只是想将我的图像相对布局拉伸到 320*480。现在它夹在标题栏和我的菜单栏之间。例如,现在它的尺寸是 320*400

4

2 回答 2

0

不确定它是否会有所帮助,但尝试setScaleType()尝试不同的选项。

image.setScaleType(ScaleType.FIT_CENTER);

这里列出了 ScaleType 类的所有常量。

于 2012-08-29T14:22:54.943 回答
0

我必须诚实地说我不完全确定你想在这里做什么。但我会假设你想让图像功能作为背景。如果这是你想要的,你可以简单地通过在主布局上设置 android:background="@drawable/your_image" 属性来做到这一点你的布局文件。

如果您想要删除标题栏,只需将此行添加到活动类中的 onCreate 方法即可完成:

//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);

如果您想要删除通知栏,这也可以在活动类的 onCreate 方法中完成:

//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

我希望这可以帮助你:-) 如果这不是你要找的东西,那么不要犹豫,尝试重新制定你想要的东西。

于 2012-08-29T14:27:21.700 回答