android子视图忽略父级填充

时间:2011-04-15 18:22:52

标签: android

我有许多具有不同ViewGroup根的布局(LinearLayouts,RelativeLayouts等)。这些视图都按预期工作,但现在我正在尝试添加顶部导航栏。问题是根可以有不同的填充,如果我只是在每个布局中包含我的布局,导航栏的宽度受父代填充的限制。我希望这个导航栏忽略根的左/右/顶部填充,并在布局的最顶部完全全宽。我可以在导航栏的布局中做些什么来实现这一点,或者我注定要修改所有现有布局以适应这种情况?

3 个答案:

答案 0 :(得分:32)

虽然这似乎是一个非常糟糕的主意,但您可以通过将父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之外,其中包含您要避免的填充。

答案 1 :(得分:3)

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

答案 2 :(得分:0)

实际上,事实证明您可以更改默认标题栏:http://www.helloandroid.com/tutorials/how-create-custom-titlebar

http://www.anddev.org/my_own_titlebar_backbutton_like_on_the_iphone-t4591.html也被证明是有用的。不管怎样,谢谢!