Android ScrollView 绝不滚动

问题描述 投票:0回答:1

我有一个相当复杂的布局,主要显示一张带有文本的图片(重叠)和底部的一些按钮。我动态设置文本,在某些情况下它超过了 TextBox 高度,所以我决定添加一个 ScrollView,但无论我尝试什么,ScrollView 都永远不会工作(滚动),并且“隐藏”文本永远不会显示。

我已经阅读了所有相关的 StackOverflow 帖子,但没有运气,我也尝试过 android:fillViewport="true" 也没有运气,也没有运气与 AndroidManifest 中的 android:windowSoftInputMode="adjustResize|stateHidden"

还有其他想法吗?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/mainLayout"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
              android:background="@drawable/gradient_background">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:visibility="invisible"
            android:paddingLeft="20dp"
            android:paddingRight="20dp"
            android:id="@+id/rlThought">

                <ImageView
                    android:id="@+id/ivBackground"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true"
                    android:adjustViewBounds="true"
                    android:contentDescription="@string/desc"
                    android:scaleType="centerCrop"
                    android:cropToPadding="true"
                    android:background="@drawable/frame_border_phone" />

                <ScrollView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:fillViewport="true"
                    android:layout_centerInParent="true">

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

                        <TextView
                            android:id="@+id/tvThought"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_centerInParent="true"
                            android:gravity="center"
                            android:shadowColor="#000"
                            android:shadowDx="2"
                            android:shadowDy="2"
                            android:shadowRadius="6"
                            android:paddingLeft="30dp"
                            android:paddingRight="30dp"
                            android:textColor="#FFF"
                            android:textSize="28sp"
                            android:textStyle="bold" />

                        <View
                            android:layout_width="match_parent"
                            android:layout_height="100dp" />

                    </LinearLayout>

                </ScrollView>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:id="@+id/llFrameInfo"
                android:orientation="vertical">

                <!--llSignature-->
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/llSignature"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/tvSignaturePrefix"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="#000"
                        android:textStyle="bold"
                        android:textSize="12sp" />

                    <TextView
                        android:id="@+id/tvSignature"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="#000"
                        android:textSize="12sp" />

                </LinearLayout>

                <!--llTrackDetails-->
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/llTrackDetails"
                    android:visibility="gone"
                    android:paddingBottom="1dp"
                    android:layout_below="@id/llSignature"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/tvTrackDetailsTitle"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="#000"
                        android:textStyle="bold"
                        android:textSize="12sp" />

                    <TextView
                        android:id="@+id/tvTrackDetails"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="#000"
                        android:textSize="12sp" />

                </LinearLayout>

                <!--Copyright-->
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/llCopyright"
                    android:layout_below="@id/llTrackDetails"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/tvCopyright"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="#000"
                        android:textSize="12sp" />

                </LinearLayout>

            </LinearLayout>

        </RelativeLayout>

        <ImageView
            android:id="@+id/animOverlay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:adjustViewBounds="true"
            android:contentDescription="@string/desc"
            android:scaleType="centerCrop"
            android:cropToPadding="true"
            android:visibility="invisible" />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/llBottomMenu"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_alignParentBottom="true"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="20dp"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/ivShareImage"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="start"
                    android:src="@drawable/menu_share"
                    android:contentDescription="@string/thought_share" />

                <ImageView
                    android:id="@+id/ivShareVideo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="start"
                    android:src="@drawable/menu_share"
                    android:contentDescription="@string/thought_share" />

                <ImageView
                    android:id="@+id/ivSave"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="start"
                    android:layout_marginLeft="8dp"
                    android:src="@drawable/save"
                    android:contentDescription="@string/thought_save" />

                <ImageView
                    android:id="@+id/ivPlay"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="start"
                    android:layout_marginLeft="10dp"
                    android:src="@drawable/play"
                    android:contentDescription="@string/track_play" />

                <ImageView
                    android:id="@+id/ivPause"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="start"
                    android:layout_marginLeft="10dp"
                    android:src="@drawable/pause"
                    android:contentDescription="@string/track_stop" />

                <Spinner
                    android:id="@+id/animSpinner"
                    android:layout_width="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:layout_height="35dp" />

            </LinearLayout>

        </LinearLayout>

    </RelativeLayout>

</LinearLayout>

编辑1:

好的,经过长时间的尝试和错误,我让 ScrollView 部分工作了。我已经删除了第二个relativelayout(从顶部数),不知道为什么但开始工作,但现在的问题是你看到文本剪切而不是全文,即使你可以滚动:s

android scroll scrollview
1个回答
0
投票

在我的特定情况下,将 ScrollView 内容(在我的情况下是 TextView)layout_height 设置为“wrap_content”会导致 ScrollView 不滚动(为什么???),而如果我设置固定值滚动开始工作,所以最后,我为了使其工作,我们所做的就是在代码中计算 ScrollView 内容并动态设置其layout_height。

动态计算 ScrollView 内容高度是一项相当复杂的任务,因为我需要在渲染视图之前执行此操作,但这是另一个线程的主题:),事实是计算内容高度并动态设置其layout_height已经为我完成了这个技巧.

© www.soinside.com 2019 - 2024. All rights reserved.