我有一个相当复杂的布局,主要显示一张带有文本的图片(重叠)和底部的一些按钮。我动态设置文本,在某些情况下它超过了 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
在我的特定情况下,将 ScrollView 内容(在我的情况下是 TextView)layout_height 设置为“wrap_content”会导致 ScrollView 不滚动(为什么???),而如果我设置固定值滚动开始工作,所以最后,我为了使其工作,我们所做的就是在代码中计算 ScrollView 内容并动态设置其layout_height。
动态计算 ScrollView 内容高度是一项相当复杂的任务,因为我需要在渲染视图之前执行此操作,但这是另一个线程的主题:),事实是计算内容高度并动态设置其layout_height已经为我完成了这个技巧.