向滚动视图添加布局会被吃掉

时间:2014-10-01 14:47:40

标签: android android-layout android-scrollview

我的布局是这样的:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginBottom="10dp"
    android:background="#ff303f"
    android:id="@+id/layout">
    <ImageView 
        android:id="@+id/picture"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_centerInParent="true"/>
    <Button
        android:id="@+id/cancel"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_alignRight="@id/picture"
        android:background="@drawable/cross_out"/>
</RelativeLayout>

我使用通常的布局充气服务对其进行充气,为按钮设置一些功能,为imageview设置图像(所有图像都具有相同的尺寸和宽高比)。

之后,我将这个视图添加到我的片段布局中,它只是一个父级的ScrollView,它有一个子线性布局,我称之为'map',只需将它添加到地图中。

预期:添加的布局应该正确添加,我可以滚动它。 实际:如果添加超过2,则第一个被吃掉。我可以看到它的一半或有时它完全被吃掉了。 :\

有什么想法在这里发生?非常感谢你的时间。

编辑: 这是布局文件,我将膨胀的布局添加到:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#f6ff45">
        <LinearLayout
            android:id="@+id/map"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#43ff44"
            android:orientation="vertical"
            android:layout_margin="10dp"
            android:layout_gravity="center"
            android:layout_marginTop="15dp">

</LinearLayout>
</ScrollView>

我也忘了提到在添加了3个或更多这些布局后,我意识到最后有不必要的空白空间。 :\

2 个答案:

答案 0 :(得分:0)

如果您的ScrollView中有一些android:layout_gravitygravity属性,那可能就是原因。请尝试删除它,或将其设为center_horizontal

答案 1 :(得分:0)

尝试使用此代码作为布局文件;

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#f6ff45">
        <LinearLayout
            android:id="@+id/map"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#43ff44"
            android:orientation="vertical"
            android:layout_margin="10dp"
            android:layout_gravity="center"
            android:layout_marginTop="15dp">

</LinearLayout>
</ScrollView>

正如我之前提到的,此LinearLayout中的android:layout_gravity="center"会导致此问题。因为它不仅水平居中,而且还以内心为中心。这意味着当它们长于可用高度时,将出现中心部分。我只将其更改为android:layout_gravity="center_horizontal"并解决了问题。