Android ScrollView 绝不滚动
Android ScrollView not scrolling by no means
我有一个相当复杂的布局,我主要显示上面有文字(重叠)的图片和底部的一些按钮。我动态设置了文本,在某些情况下它超过了 TextBox 的高度,所以我决定添加一个 ScrollView,但无论我尝试什么,ScrollView 永远无法工作(滚动)并且永远不会显示 "hidden" 文本。
我已经阅读了所有相关的 Whosebug 帖子,但没有成功,我也尝试过 android:fillViewport="true" 也没有成功运气好 android:windowSoftInputMode="adjustResize|stateHidden" 在 AndroidManifest.
还有其他想法吗?
<?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 动态地为我完成了技巧。
祝大家编码愉快。
我有一个相当复杂的布局,我主要显示上面有文字(重叠)的图片和底部的一些按钮。我动态设置了文本,在某些情况下它超过了 TextBox 的高度,所以我决定添加一个 ScrollView,但无论我尝试什么,ScrollView 永远无法工作(滚动)并且永远不会显示 "hidden" 文本。
我已经阅读了所有相关的 Whosebug 帖子,但没有成功,我也尝试过 android:fillViewport="true" 也没有成功运气好 android:windowSoftInputMode="adjustResize|stateHidden" 在 AndroidManifest.
还有其他想法吗?
<?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 动态地为我完成了技巧。
祝大家编码愉快。