当空间不足时使用替代布局

时间:2012-08-22 08:02:35

标签: android android-layout

我有RelativeLayout,其中包含许多控件。在某些屏幕上,此布局可能没有足够的空间以及其他屏幕元素。在这种情况下,我想使用一个排除某些控件并且填充量较少的替代布局。

如何以高效的方式实现这一点?如果较大的布局肯定不适合,则只应加载较小的布局。我不想使用各种screen size qualifiers,因为布局是否合适是屏幕宽度和高度以及其他可见控件的函数,看起来它会变得太复杂。

2 个答案:

答案 0 :(得分:2)

我个人认为你应该使用新的屏幕大小限定符。这就是Android的设计方式,我认为你应该遵循这些规则。它很可能也会使整个开发过程变得更加容易!


但如果你坚持自己做,我能想到的唯一方法是“硬编码”,就像这样:

第1步:获取屏幕尺寸

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

或者如果您的目标是较低的API级别:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  // deprecated
int height = display.getHeight();  // deprecated

第2步:根据屏幕尺寸选择其他布局

if(width < value_x_small && height < value_y_small){
        setContentView(R.layout.main_small);

} else if(width > value_x_small && height > value_y_small){
        setContentView(R.layout.main_large);

} else {
        setContentView(R.layout.main_larged);

}

此代码允许您根据px中的屏幕大小选择自己的资源。最好将px值转换为DP(DPI)并使用它们来做出决定。您可能还想添加对当前屏幕方向的检查。

答案 1 :(得分:0)

您可以将控件实现为单独的Fragments,并根据屏幕大小定位它们。以下是有关Fragments and their Design Philosophy

的更多信息