У меня возникают проблемы с фрагментом, состоящим из ScrollView, содержащего LinearLayout. Я пытаюсь создать эффект, когда LinearLayout имеет белый фон и выглядит как лист бумаги, прокручиваемый на цветном фоне. Способ, которым я пытаюсь достичь этого, заключается в том, что ScrollView занимает полное пространство фрагмента, а затем LinearLayout внутри имеет android:layout_margin="16dp"
, чтобы создать пространство вокруг "бумаги".
Таким образом, полоса прокрутки ScrollView появляется в цветной области фона, верхний край прокручивается вместе с содержимым, а край внизу только прокручивается, когда он достигает конца.
К сожалению, в этой конфигурации ScrollView не будет прокручиваться до конца и фактически отсекает очень небольшое количество текста внизу. Я подозреваю, что ScrollView не учитывает его дочерние поля в своем вертикальном диапазоне прокрутки. Чтобы решить эту проблему, я завернул LinearLayout в FrameLayout, который решает проблему, но кажется излишним. Любые указатели на то, как устранить этот ненужный контейнер, будут оценены.
Примечание: установка android:padding="16dp"
в ScrollView и обрезка полей не имеет желаемого эффекта, так как после этого прокладка появляется на всех четырех краях непрерывно, независимо от положения прокрутки.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
tools:context=".ArticleFragment" >
<!-- This FrameLayout exists purely to force the outer ScrollView to respect
the margins of the LinearLayout -->
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp"
android:layout_margin="16dp"
android:background="@color/page_background" >
<TextView
android:id="@+id/article_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textIsSelectable="true" />
<TextView
android:id="@+id/article_content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textIsSelectable="true" />
</LinearLayout>
</FrameLayout>
</ScrollView>