android子视图忽略父填充

问题描述

| 我有许多布局具有不同的ViewGroup根(LinearLayouts,RelativeLayouts等)。这些视图都按我的预期工作,但是现在我试图添加顶部导航栏。问题在于根部可以具有不同的填充,如果我仅在每个布局中都包含布局,则导航栏的宽度会受到父级填充的限制。我希望此导航栏忽略根的左/右/顶部填充,并在布局的最顶部完全完全宽度。我是否可以在导航栏的布局中做任何事情来实现此目的,或者我注定要修改所有现有布局以适应此情况?     

解决方法

尽管这似乎是一个坏主意,但您可以通过将父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之外。     ,为什么需要更改所有布局?如果只有导航栏需要忽略填充,则可以将导航栏从其当前父布局中移出,然后将这两个布局放到另一个没有填充的布局中。     ,实际上,事实证明您可以更改默认标题栏:http://www.helloandroid.com/tutorials/how-create-custom-titlebar。 事实证明http://www.anddev.org/my_own_titlebar_backbutton_like_on_the_iphone-t4591.html也很有用。不管怎么说,多谢拉!