子TextViews不滚动的水平滚动视图

时间:2019-01-03 08:35:40

标签: android xml

我正在向用户显示一些统计信息。屏幕上有很多信息,因此空间狭窄。我决定使用水平滚动视图,该视图总共包含9个TextView。但是,我只想一次显示其中三个文本视图。

像这样:

scroll

(箭头是一个单独的图像视图,仅显示其可以滚动的用户)

这很好,我希望它看起来如何。但是,还有6个其他统计数据需要显示。我希望能够向右滚动,然后出现三个新的文本视图(当我获得最后三个统计数据时,再回到左侧)。此水平滚动视图是LinearLayout的父级,LinearLayout具有9个子TextViews。我尝试将每三个TextView放置在自己的线性布局中,但由于“水平滚动视图”只能有一个LinearLayout子级而被阻止。

我目前对gone具有其他6个统计信息可见性,因为它们当前以垂直顺序添加到前3个统计信息的下方,如下图所示:

enter image description here

我的计划本来是为了语法显示下三个统计信息,并在滚动时隐藏原始数据,但是在编写此代码之前,我测试了一下前三个参数是否可滚动,但是当我尝试滚动时它们没有反应。

我如何得知?

这是我当前的xml:

 <HorizontalScrollView
    android:id="@+id/sv_horizontalP1Stats"
    android:layout_width="0dp"
    android:layout_height="97dp"
    android:layout_marginStart="8dp"
    android:layout_marginLeft="8dp"
    app:layout_constraintBottom_toBottomOf="@+id/sv_horizontalP2Stats"
    app:layout_constraintEnd_toStartOf="@+id/sv_player1PastScores"
    app:layout_constraintHorizontal_bias="0.596"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/iv_navArrowP1">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/tv_legAvg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:text="@string/tv_LegAVG"
            android:textSize="13sp" />

        <TextView
            android:id="@+id/tv_matchAVG"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:text="@string/tv_MatchAVG"
            android:textSize="13sp" />

        <TextView
            android:id="@+id/tv_first6Avg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:text="@string/tv_first6AVG"
            android:textSize="13sp" />

        <TextView
            android:id="@+id/tv_100plus"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/tv_100plus"
            android:visibility="gone" />

        <TextView
            android:id="@+id/tv_140Plus"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/tv_140plus"
            android:visibility="gone" />

        <TextView
            android:id="@+id/tv_180s"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/tv_180"
            android:visibility="gone" />

        <TextView
            android:id="@+id/tv_bestFinish"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/tv_bestFinish"
            android:visibility="gone" />

        <TextView
            android:id="@+id/tv_bestLeg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/tv_BestLeg"
            android:visibility="gone" />

        <TextView
            android:id="@+id/tv_doublesPercentage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/tv_doubles"
            android:visibility="gone" />


    </LinearLayout>

</HorizontalScrollView>

1 个答案:

答案 0 :(得分:1)

您需要做的就是在主线性布局内创建多个线性布局。每个视图都包含3个文本视图,并将主线性布局的方向更改为水平,然后就可以了。

例如:

<HorizontalScrollView
    android:id="@+id/sv_horizontalP1Stats"
    android:layout_width="0dp"
    android:layout_height="97dp"
    android:layout_marginStart="8dp"
    android:layout_marginLeft="8dp"
    app:layout_constraintBottom_toBottomOf="@+id/sv_horizontalP2Stats"
    app:layout_constraintEnd_toStartOf="@+id/sv_player1PastScores"
    app:layout_constraintHorizontal_bias="0.596"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/iv_navArrowP1">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="horizontal"> <!-- Changing orientation to horizontal -->

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical"> <!-- Group 1 of TV  -->

            <TextView
                android:id="@+id/tv_legAvg"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="@string/tv_LegAVG"
                android:textSize="13sp" />

            <TextView
                android:id="@+id/tv_matchAVG"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="@string/tv_MatchAVG"
                android:textSize="13sp" />

            <TextView
                android:id="@+id/tv_first6Avg"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="@string/tv_first6AVG"
                android:textSize="13sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical"> <!-- Group 2 -->

            // .. Next three
        </LinearLayout>

        // .. And soo on

    </LinearLayout>

</HorizontalScrollView>`