Android:有没有办法让fill_parent不缩小以适合父母的父级?

时间:2011-01-21 03:49:39

标签: android layout dimensions

我的活动看起来像这样

| header           |
|------------------|
|  ViewGroup       |
|  that fills      |
|  the screen      |
|                  |
|     centered     |
|      button      |
|                  |
|------------------|
| footer           |

填充屏幕的视图组是RelativeLayout的子项,RelativeLayout用fill_parent和layout_below标题以及layout_above页脚填充屏幕。该RelativeLayout下的ViewGroup在运行时设置为RelativeLayout的相同宽度和高度。

它在运行时设置相同高度的原因是因为这个视图组可以用手指向左拖动(类似于Android主屏幕)如果我将它拖到左边就可以了。但如果我将它拖到右边,我的fill_parent尺寸会搞砸。

| header           |
|------------------|
|     '  ViewGroup |     ' 
|     '  that fills|     '
|     '  the screen|     '
|     '            |     '
|     '  centered  | <-- button not centered. It is only centered on the visible area, not the whole thing
|     '   button   |     '
|     '            |     '
|     '            |     '
|------------------|
| footer           |

我正在进行定位的方法是设置ViewGroup的左边距,将其向右移动(或将其设置为负值以将其向左移动)

为什么我不能使用HorizontalScrollView

这是android

的顶视图
     ' previous ' current  '   next   ' # Three panes that can be dragged to switch between
                |          | # The android screen bounderies

我正在计划用户能够通过左右拖动屏幕来进行下一个/上一个。如果用户稍微拖动屏幕并且他/她慢慢地进行操作

        ' previous ' current  '   next   ' 
                |          |

然后屏幕应该恢复原状

     ' previous ' current  '   next   ' 
                |          |

如果用户快速完成

              ' previous ' current  '   next   ' 
                |          |

然后屏幕应该为剩下的方式设置动画

                ' previous ' current  '   next   ' 
                |          |

上一个应该成为新的当前,我们应该有一个新的前一个

     ' previous ' current  '   next   ' 
                |          |

我使用了scrollview,我会做这样的事情

     ' previous ' current  '   next   ' 
     |          |

现在除非我跳过滚动

,否则没有新的前一个空间
     ' previous ' current  '   next   ' 
                |          |
对我来说听起来更糟糕。

所以我的选择是

  • AbsoluteLayout(已弃用/不使用)
  • RelativeLayout.LayoutParams.setMargins(见下文。这就是我现在正在做的事情)
  • 写我自己的LayoutManager(听起来比现在容易)
  • 将像素绘制到屏幕上而不是使用View s(DirectDraw或OpenGL)
  • HorizontalScrollView

1 个答案:

答案 0 :(得分:5)

如果设置正左边距,则还应设置负右边距。这允许ViewGroup继续离开右侧屏幕的边缘。