Si verificano problemi con un frammento costituito da una ScrollView contenente un LinearLayout. Sto cercando di creare un effetto in cui LinearLayout ha uno sfondo bianco e sembra un pezzo di carta che scorre su uno sfondo colorato. Il modo in cui sto cercando di ottenere questo risultato è far scorrere ScrollView occupando tutto lo spazio del frammento e quindi il LinearLayout interno ha lo android:layout_margin="16dp"
per creare lo spazio attorno alla "carta".ScrollView non scorre fino alla fine del margine inferiore interno di LinearLayout
In questo modo, la barra di scorrimento di ScrollView appare nell'area di sfondo colorata, il margine in alto scorre via insieme al contenuto e il margine in basso scorre solo quando si raggiunge la fine.
Sfortunatamente in questa configurazione ScrollView non scorrerà fino alla fine e in effetti taglia una piccola parte del testo in basso. Sospetto che ScrollView non tenga conto dei margini del suo bambino nella sua distanza di scorrimento verticale. Per risolvere questo problema ho avvolto LinearLayout in un FrameLayout che risolve il problema, ma sembra superfluo. Sarebbe apprezzato qualsiasi suggerimento su come eliminare questo contenitore non necessario.
Nota: l'impostazione di android:padding="16dp"
sullo ScrollView e la scomposizione dei margini non ha l'effetto desiderato, poiché il padding appare continuamente su tutti e quattro i bordi, indipendentemente dalla posizione di scorrimento.
<?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>
provato a installare 'Android: layout_height = "fill_parent"' a 'ScrollView'? –
@AdilSoomro Sì, nessuna gioia. La dimensione di ScrollView non è davvero un problema: riempie lo spazio disponibile in modo appropriato. È l'area di scorrimento che fornisce: non consente lo scorrimento fino alla fine del suo contenuto quando il bambino immediato ha un margine.Credo che il problema sia causato dal fatto che non tiene conto del margine di suo figlio quando calcola l'area di scorrimento. –