我有RelativeLayout
,其中包含许多控件。在某些屏幕上,此布局可能没有足够的空间以及其他屏幕元素。在这种情况下,我想使用一个排除某些控件并且填充量较少的替代布局。
如何以高效的方式实现这一点?如果较大的布局肯定不适合,则只应加载较小的布局。我不想使用各种screen size qualifiers,因为布局是否合适是屏幕宽度和高度以及其他可见控件的函数,看起来它会变得太复杂。
答案 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。