12

LinearLayout を含む ScrollView で構成される Fragment に問題があります。LinearLayout の背景が白で、色付きの背景をスクロールする紙のように見える効果を作成しようとしています。私がこれを達成しようとしている方法は、ScrollView にフラグメントの全スペースを占有させてから、内部の LinearLayout でandroid:layout_margin="16dp"「紙」の周りにスペースを作成することです。

このように、ScrollView のスクロール バーは色付きの背景領域に表示され、上部のマージンはコンテンツと共にスクロールし、下部のマージンは最後に到達したときにのみスクロールします。

残念ながら、この構成では、ScrollView は最後までスクロールせず、実際には下部のごくわずかなテキストが切り取られます。ScrollView は、垂直方向のスクロール距離で子のマージンを考慮していないと思われます。これを解決するために、問題を解決する FrameLayout で LinearLayout をラップしましたが、余分なようです。この不要なコンテナを削除する方法についての指針をいただければ幸いです。

注: android:padding="16dp"ScrollView を設定して余白を削除しても、スクロール位置に関係なく、4 つの端すべてに連続してパディングが表示されるため、目的の効果は得られません。

<?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>
4

3 に答える 3

1

質問は古いですが、FrameLayoutをラップするときにScrollViewの動作が悪いという問題がありました。また、含まれているレイアウトのマージンを考慮していないようです。FrameLayout を別の単一の子 LinearLayout に置き換えることができます。これは正しく測定されるはずです。FrameLayout を完全に削除し、内側のレイアウトにパディングを使用して合計マージンを追加するだけです。

<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">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="26dp"
            android:background="@color/page_background" >
<!--...-->
于 2016-10-28T15:33:41.077 に答える
0

を取り除き、レイアウトの高さとして設定されたの子を作成FrameLayoutします。それでもうまくいかない場合は、下の余白を、必要な高さと背景を持つ別の任意のものに置き換えて、.LinearLayoutScrollViewmatch_parentViewLinearLayout

于 2013-05-08T15:03:41.903 に答える