我的应用程序中有一个活动,我希望用户能够垂直滚动LinearLayout中包含的内容,而ScrollView又位于LinearLayout中。以下是此活动的布局XML的摘要:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_margin="20dip"
            android:orientation="vertical">

            <!-- a bunch of standard widgets, omitted for brevity -->

            <!-- everything renders but starting in this TextView -->
            <!-- content begins to get truncated -->
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:paddingLeft="20dp"
                android:gravity="left"
                android:textSize="20dip"/>

            <!-- this View, really just a trick for a horizontal row, is -->
            <!-- completely cutoff -->
            <View
                android:layout_width="fill_parent"
                android:layout_height="2dip"
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                android:background="@color/green" />
        </LinearLayout>
    </ScrollView>
</LinearLayout>

我所观察到的是内部的内容在内部被切断。在上面的最后一个ScrollView中,当它包含很少的文本时,下面的TextView将以纵向呈现,但不以横向呈现。当这个View包含大量文本时,它将在纵向模式下被截断。
我尝试了在堆栈溢出上找到的建议。向TextView添加底部填充并没有解决问题,也没有将ScrollView替换为ScrollView
欢迎提出任何有益的建议。事实证明这是个障碍。

最佳答案

将内部LinearLayout的边距改为填充。或者,如果你真的需要它是边距(也许你使用的是自定义背景),把你的LinearLayout包装成FrameLayout
ScrollViewLinearLayout中获取它的高度(或者更准确地说,它正在计算它的可滚动范围)。这个值不包括边距,所以您的ScrollView将被LinearLayout的上下边距之和“太短”。

07-24 09:47
查看更多