LinearLayout中的android布局在具有屏幕导航的设备上重叠

时间:2014-06-25 07:48:07

标签: android android-layout android-linearlayout

当我的应用程序下载到带有屏幕导航选项卡的设备上时,我的一些布局开始相互重叠。

基本上,我有一个父级纵向LinearLayout,另外四个LinearLayout作为子级。当导航在屏幕上时,子布局开始相互重叠。

这是正常的吗?我认为,因为我使用默认的Android小部件,所以它不应该有重叠的问题。

初始化代码:

  // other code ... 

  mainLayout = new LinearLayout(getActivity());
  mainLayout.setOrientation(LinearLayout.VERTICAL);

  // other code...

  titleBarLayout = new RelativeLayout(getActivity());
  titleBarLayout.setGravity(Gravity.CENTER);
  mainLayout.addView(titleBarLayout);

  titleBarLayout.getLayoutParams().width =SCREEN_WIDTH;

  // other code...

  miniBarLayout = new LinearLayout(getActivity());
  miniBarLayout.setOrientation(LinearLayout.HORIZONTAL);
  miniBarLayout.setGravity(Gravity.CENTER);
  miniBarLayout.setPadding(0, 1, 0, 1);
  mainLayout.addView(miniBarLayout);

  // other code...

  userBarLayout = new LinearLayout(getActivity());
  userBarLayout.setOrientation(LinearLayout.HORIZONTAL);

  mainLayout.addView(userBarLayout);

具体问题:userBarLayoutminiBarLayout重叠。

1 个答案:

答案 0 :(得分:0)

如果您在屏幕上彼此相邻的视图(或窗口小部件)的大小总和变得大于可用空间,则需要提供一些内容..有几个选项可以解决此问题:

  • 使用RelativeLayouts相对于其他视图定位视图,从而为Android提供更好的提示,说明如何处理应用程序缺少的屏幕空间。
  • 以一种“备用”空间的方式定义视图/窗口小部件的大小。通常,您需要View的“weight”和“weightSum”属性来定义您要对此“备用”空间执行的操作。换句话说:以相对方式定义视图的大小。 (注意:当使用权重时,请理解那些仅适用于SPARE空间,在考虑所有固定大小后,您可能需要故意将视图的所有大小设置为0dp,然后使用相对权重定义所有内容!)
  • 如果您真的想要以“硬”数字(如dp)定义布局,则可能需要为特定设备/设备类别创建单独的布局xml文件。那些布局文件应该存储在属性资源目录中(/ res / layout-large / res / layout-w700dp等)