1

基本上,我使用一种流行的策略来将背景图像居中,方法是LinearLayout将其包装在 a 中FrameLayout并添加一个fill_parentLinearLayout. 但是,当我ScrollView在游戏中添加 a 时,一切都变了。

问题是图像在垂直方向上非常大,并且由于height 属性而ScrollView尊重 theImageView和 the的高度。当图像垂直大于它时,这会导致 LinearLayout 下方出现不需要的空白空间。LinearLayoutwrap_content

如何使FrameLayout' 的高度仅拉伸到子 LinearLayout 的高度?如果可能,不要在运行时/绘图时以编程方式修改其大小。

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true" >

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scaleType="center"
            android:src="@drawable/cash_bg" />

        <LinearLayout
            android:id="@+id/main_ll"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical" >

            <!-- My main views are here -->

        </LinearLayout>
    </FrameLayout>
</ScrollView>
4

1 回答 1

4

我遇到了同样的问题,并且疯狂地寻找答案。我认为这是一个Android错误。我所做的是将 FrameLayout 包含到 LinearLayout 中,以便能够在 FrameLayout 的高度上强制“fill_parent”,这增加了复杂性,但解决了问题。没有找到任何其他(更好的)解决方案。试试这个:

<ScrollView
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:fillViewport="true" >
  <LinearLayout
   android:layout_width="fill_parent"
   android:layout_height="wrap_content">
    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scaleType="center"
            android:src="@drawable/cash_bg" />

        <LinearLayout
            android:id="@+id/main_ll"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical" >

            <!-- My main views are here -->

        </LinearLayout>
    </FrameLayout>
   </LinearLayout>
</ScrollView>
于 2012-09-27T10:19:31.620 回答