2011-04-15 99 views
12

我有许多布局有不同的ViewGroup根(LinearLayouts,RelativeLayouts等)。这些视图都符合我的期望,但现在我正在尝试添加顶部导航栏。问题是根可以有不同的填充,如果我简单地将我的布局包含在每个布局中,则导航栏的宽度将受到父级填充的限制。我希望这个导航栏忽略根的左/右/顶部填充,并且在布局的最顶部是完全全宽。有没有什么我可以在导航栏的布局中做到这一点,或者我注定要修改所有现有的布局以适应此?android子视图忽略父填充

回答

3

为什么你需要改变所有的布局?如果只有导航栏需要忽略填充,则可以将导航栏取出当前父级布局,然后将这两个布局放入另一个没有填充的布局中。

26

虽然这看起来像是一个非常糟糕的主意,但您可以通过将父ViewGroup的clipToPadding属性设置为false,然后在子视图上设置负边距来完成要查找的内容。

例子:

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:background="#EEE" 
    android:clipToPadding="false"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello" 
     android:background="#333" 
     android:layout_marginLeft="-10dp" 
     android:layout_marginRight="-10dp" 
     android:layout_marginTop="-10dp"/> 
</LinearLayout> 

上述例子的作品,但我会建议你只要把你的顶部导航栏的ViewGroup这些包含你正在试图避免垫衬的外面。

+0

它不适合我 – 2014-06-06 08:11:37

+0

不喜欢它,如果哟有一个动态填充?你打算在res文件中添加相同但负值的每个值吗? – Karoly 2018-02-09 00:18:29