当手机处于纵向模式时,它会在顶部和下方显示标题和图像,其中包含按钮和带有注释的ListView
。但是,当我将手机设置为横向模式时,按钮和ListView
消失,仅显示标题和图像。我基本上不能在图像下面滚动了。
还有第三个元素 - 身体的TextView
- 也在ScrollView
内:每个布局都会包含内容或图片TextView
。当TextView
具有内容而没有图像时,会发生同样的事情。当图像或文本不占用整个屏幕时,不会发生这种情况。
肖像模式:
横向模式:
随附代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="net.vannevel.redditapp.activities.PostActivity">
<TextView
android:id="@+id/postDetailTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textColor="#000" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/postDetailImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/postDetailBody"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/postDetailViewOnlineButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onViewOnlineButtonClicked"
android:text="View original source" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="COMMENTS" />
<ListView
android:id="@+id/postDetailCommentList"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
答案 0 :(得分:2)
所以你的问题是滚动视图中的项目高于横向屏幕高度。即使你在ScrollView
内滚动,一旦你到达它的末尾就没有什么可以做的。放在ScrollView
之外的所有元素都将在屏幕外,并放置在任何可滚动容器之外。
我可以看到3种可能的解决方案:
1 - 将固定大小设置为滚动视图,使其不占据整个屏幕,以便让其他视图进入。不实用,但是:横向电话意味着身高矮,你必须适合一张照片并列出评论......
2 - 横向不同的布局 - 左边的图片,右边的评论列表
3 - 摆脱ScrollView
并将ListView
上的所有内容设置为ListView
标题(addHeaderView
)
例如:
第1步 - 提取ListView
之上的所有内容并将其放入不同的布局文件中 - 让我们称之为header.xml
第2步 - 夸大布局:
View headerView = inflater.inflate(R.layout.header, listView, false);
第3步 - 像现在一样初始化标题上的项目
步骤4 - 将视图设置为列表ListView
的标题:
listView.addHeaderView(headerView, null, false);
这种方法的副作用是标题,现在是ListView
的一部分,它会在滚动列表时滚动。此外,它将使您在适配器中的位置偏移1。
答案 1 :(得分:1)
变化:
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="300dp"
android:orientation="vertical">
或实施两个layouts
portland
和landscape
方向。