片段中的Android ScrollView太长了

时间:2014-07-10 16:09:59

标签: android android-fragments

我有以下Fragment布局

<ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:fillViewport="true">

    <RelativeLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/background_main">

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:layout_marginTop="50dp"
                android:text="DEMO TEXT"
                android:textStyle="bold"
                android:id="@+id/fragment_statictext_title"
                android:layout_gravity="center_horizontal|top"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"/>

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingLeft="20dp"
                android:paddingRight="20dp"
                android:textSize="14sp"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Medium Text"
                android:id="@+id/fragment_statictext_body"
                android:layout_gravity="center"
                android:paddingTop="30dp"
                android:layout_below="@+id/fragment_statictext_title"
                android:layout_centerHorizontal="true"/>

    </RelativeLayout>
</ScrollView>

我遇到的问题是ScrollView太长了。因此,即使TextViews不占用比屏幕更长的空间,ScrollView也会滚动两倍于屏幕。

以下屏幕是Android Studio中的预览:

ScrollView Preview

正如您所看到的,它比任何父设备都要长得多。

2 个答案:

答案 0 :(得分:2)

我之前在ADT看过这个。当你有一个包含很多对象的ScrollView时,这是一个非常方便的预览,它们​​只是不适合一个屏幕。在实际设备上,它将滚动,或者如果所有对象都适合屏幕,则在尝试滚动时会得到滚动提示。

RelativeLayout最适合用于相对于彼此定位项目。 LinearLayout最适用于水平或垂直放置项目。当您在一个屏幕上有多个适合时,最好使用ScollView。这是一个不适合屏幕的示例,因此在需要更改时,高预览非常方便。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:background="@drawable/background_view_rounded_single"
            android:gravity="center_horizontal"
            android:orientation="vertical"
            android:visibility="visible" >

            <TextView
                android:id="@+id/tvFollowSpeedDesc"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingLeft="32dp"
                android:paddingRight="32dp"
                android:text="@string/tvFollowSpeedDesc"
                android:textAppearance="?android:attr/textAppearanceMedium" >
            </TextView>

            <CheckBox
                android:id="@+id/cbFollowSpeed"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/cbFollowSpeed" />

            <RadioGroup
                android:id="@+id/rgFollowSpeed"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <RadioButton
                    android:id="@+id/rdoFollowMPH"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:checked="true"
                    android:text="@string/rdoFollowMPH" />

                <RadioButton
                    android:id="@+id/rdoFollowKPH"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/rdoFollowKPH" />
            </RadioGroup>
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:background="@drawable/background_view_rounded_single"
            android:gravity="center_horizontal"
            android:orientation="vertical"
            android:visibility="visible" >

            <TextView
                android:id="@+id/tvFollowHeadingup"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingLeft="32dp"
                android:paddingRight="32dp"
                android:text="@string/tvFollowHeadingUp"
                android:textAppearance="?android:attr/textAppearanceMedium" >
            </TextView>

            <RadioGroup
                android:id="@+id/rgFollowHeading"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <RadioButton
                    android:id="@+id/rdoFollowHeadingUp"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:checked="true"
                    android:text="@string/rdoFollowHeadingup" />

                <RadioButton
                    android:id="@+id/rdoFollowNorthUp"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/rdoFollowNorthUp" />
            </RadioGroup>
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:background="@drawable/background_view_rounded_single"
            android:gravity="center_horizontal"
            android:orientation="vertical"
            android:visibility="visible" >

            <TextView
                android:id="@+id/tvFollowPreset"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingLeft="32dp"
                android:paddingRight="32dp"
                android:text="@string/tvFollowPreset"
                android:textAppearance="?android:attr/textAppearanceMedium" >
            </TextView>

            <RadioGroup
                android:id="@+id/rgFollowPreset"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <RadioButton
                    android:id="@+id/rdoFollowPresetfine"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/fine" />

                <RadioButton
                    android:id="@+id/rdoFollowPresetMedium"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/medium" />

                <RadioButton
                    android:id="@+id/rdoFollowPresetCoarse"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/coarse" />
            </RadioGroup>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/llGpsReadsPerMinute"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:background="@drawable/background_view_rounded_single"
            android:gravity="center_horizontal"
            android:orientation="vertical"
            android:visibility="visible" >

            <TextView
                android:id="@+id/tvFollowAdvanced"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="32dp"
                android:text="@string/tvFollowAdvancedHeading"
                android:textAppearance="?android:attr/textAppearanceLarge" >
            </TextView>

             <TextView
                 android:id="@+id/tvFollowAccuracy"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:paddingLeft="32dp"
                 android:paddingRight="32dp"
                 android:text="@string/tvFollowAccuracy"
                 android:textAppearance="?android:attr/textAppearanceMedium" >

            </TextView>

            <CheckBox
                android:id="@+id/cbFollowAccuracy"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/cbFollowAccuracy" />

            <TextView
                android:id="@+id/tvFollowSecondsHeading"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingLeft="32dp"
                android:paddingRight="32dp"
                android:text="@string/tvFollowSecondsHeading"
                android:textAppearance="?android:attr/textAppearanceMedium" >
            </TextView>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:orientation="horizontal" >

                <TextView
                    android:id="@+id/tvFollowSeekBar"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:paddingLeft="32dp"
                    android:paddingRight="32dp"
                    android:text="@string/tvFollowSeekBar"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/tvgpsreadsperminute"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall" >
                </TextView>
            </LinearLayout>

            <SeekBar
                android:id="@+id/sbFollowMillis"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:max="8000"
                android:progress="4000" />

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:orientation="horizontal"
                android:visibility="visible"
                android:weightSum="10" >

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="2"
                    android:gravity="center_horizontal"
                    android:text="@string/one"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="2"
                    android:gravity="center_horizontal"
                    android:text="@string/three"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="2"
                    android:gravity="center_horizontal"
                    android:text="@string/five"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="2"
                    android:gravity="center_horizontal"
                    android:text="@string/seven"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="2"
                    android:gravity="center_horizontal"
                    android:text="@string/nine"
                    android:textAppearance="?android:attr/textAppearanceSmall" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:orientation="horizontal" >

                <TextView
                    android:id="@+id/tvFollowMinDistance"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center_horizontal"
                    android:paddingLeft="32dp"
                    android:paddingRight="32dp"
                    android:text="@string/tvFollowMinDistance"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:id="@+id/tvFollowDistance"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall" >
                </TextView>
            </LinearLayout>

            <SeekBar
                android:id="@+id/sbFollowMinDistance"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:max="20"
                android:progress="10" />

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:orientation="horizontal"
                android:visibility="visible"
                android:weightSum="20" >

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="4"
                    android:gravity="center_horizontal"
                    android:text="@string/zero"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="4"
                    android:gravity="center_horizontal"
                    android:text="@string/five"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="4"
                    android:gravity="center_horizontal"
                    android:text="@string/ten"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="4"
                    android:gravity="center_horizontal"
                    android:text="@string/fifteen"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="4"
                    android:gravity="center_horizontal"
                    android:text="@string/twenty"
                    android:textAppearance="?android:attr/textAppearanceSmall" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

</ScrollView>

答案 1 :(得分:0)

自: http://developer.android.com/reference/android/widget/ScrollView.html#attr_android:fillViewport

  

定义scrollview是否应拉伸其内容以填充视口。

这会导致您的问题吗?