Android:clipToPadding在LinearLayout中忽略子ListView?

Android:clipToPadding在LinearLayout中忽略子ListView?,android,android-layout,listview,fragment,android-linearlayout,Android,Android Layout,Listview,Fragment,Android Linearlayout,我有一个很奇怪的问题,我希望有人能解释清楚。我不确定这是不是安卓的bug 我在片段中显示了以下布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match

我有一个很奇怪的问题,我希望有人能解释清楚。我不确定这是不是安卓的bug

我在片段中显示了以下布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipToPadding="false"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@color/grey"
    android:orientation="vertical"
    tools:context="com.testapp.test.TestFragment"
    >

    <ListView
        android:id="@+id/data_listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    </ListView>

    <TextView
        android:id="@+id/section_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

即使我已将CliptPadding设置为false,我的ListView仍将剪切到LinearLayout的填充

解决方法是从LinearLayout中删除顶部和底部填充,并将其添加到ListView中,同时在ListView中将clipToPadding设置为false,但我不希望这样做,因为在特殊情况下,我可能希望隐藏ListView以在保留填充的同时显示其下方(以及屏幕外)的TextView,并希望避免在布局中增加额外的复杂性

更新: 通过一些测试,我发现了一些有趣的东西。在父LinearLayout上设置CliptPadding没有效果,因为ListView本身不会在父LinearLayout内滚动,而是ListView内的子对象在ListView内滚动!在使用调试工具进行了一些调查之后,现在似乎很明显。子对象仅限于ListView本身内部的空间,并且由于ListView设置在LinearLayout的填充内,并且不移动,因此子对象在该空间内滚动

这是我画的ASCII图:

--------- <LinearLayout>
|       | 
|       | [ Padding ]
|       | 
| ----- | <ListView>
| | c | |
| | o | |
| | n | | Content scrolls
| | t | | within ListView
| | e | | ListView doesn't move
| | n | |
| | t | |
| ----- | </ListView>
|       | 
|       | [ Padding ]
|       | 
--------- </LinearLayout>
-----------
|       | 
||[填充]
|       | 
| ----- | 
||c||
||o||
|| n | |内容卷轴
|| t | |在ListView中
|| e | |列表视图不移动
||n||
|| t||
| ----- | 
|       | 
||[填充]
|       | 
--------- 

西蒙·马奎斯的解决方案和我的工作一样。这不是我想要的解决方案,因为现在我需要为我的线性布局的每个孩子添加额外的填充,而是一个解决方案,所以这是公认的答案。感谢Simon的输入。

ListView应该具有CliptPadding属性而不是LinearLayout(并且它还应该包含填充,而不是带有scrollbarStyle=“outsideOverlay”属性的LinearLayout,以便滚动条可以放在应用程序的边距中)。有关更多信息,请参阅源代码:

<ListView
    …
    android:clipToPadding="false"
    android:scrollbarStyle="outsideOverlay" />


ListView应该具有CliptPadding属性而不是LinearLayout(并且它还应该包含填充而不是带有scrollbarStyle=“outsideOverlay”属性的LinearLayout,以便可以将滚动条放置在应用程序的边距中)。有关更多信息,请参阅来源:

<ListView
    …
    android:clipToPadding="false"
    android:scrollbarStyle="outsideOverlay" />


不,对不起。如前所述,我已经尝试设置listView和LinearLayout的CliptPadding属性。实际上,当与listView一起使用时,它非常有效。官方示例代码,我已经尝试过多次。据我所知,您希望我删除LinearLayout中的填充,并将其放入ListView,就像我的解决方法一样?是的,那确实有效。。。但这是一种变通办法。这意味着我也需要在ProgressBar中添加填充,以获得所需的外观,这会给布局增加额外的复杂性,而这并不需要在LinearLayouthure中使用CliptPadding属性,但是,您可以将ProgressBar和TextView包装在一个有填充的容器中。这是真的。。。但这仍然是一项工作。它在clipToPadding周围工作,而不是在父LinearLayout中正常工作。我正在寻找一种方法来解决这个问题,找到一个解决方案而不增加额外的复杂度,或者确认确实存在一个bug。也许是因为我忽略了一些小事情,所以它不起作用。谢谢你的推荐。不,对不起。如前所述,我已经尝试设置listView和LinearLayout的CliptPadding属性。实际上,当与listView一起使用时,它非常有效。官方示例代码,我已经尝试过多次。据我所知,您希望我删除LinearLayout中的填充,并将其放入ListView,就像我的解决方法一样?是的,那确实有效。。。但这是一种变通办法。这意味着我也需要在ProgressBar中添加填充,以获得所需的外观,这会给布局增加额外的复杂性,而这并不需要在LinearLayouthure中使用CliptPadding属性,但是,您可以将ProgressBar和TextView包装在一个有填充的容器中。这是真的。。。但这仍然是一项工作。它在clipToPadding周围工作,而不是在父LinearLayout中正常工作。我正在寻找一种方法来解决这个问题,找到一个解决方案而不增加额外的复杂度,或者确认确实存在一个bug。也许是因为我忽略了一些小事情,所以它不起作用。无论如何,谢谢你的推荐。