gpt4 book ai didi

android - ScrollView 中的 View 与配置的父级不匹配

转载 作者:IT老高 更新时间:2023-10-28 21:53:15 25 4
gpt4 key购买 nike

我有一个 ViewPager 和一个带有标签的 ActionBar。其中一个选项卡有一个 ListView,当我点击该 ListView 中的一个选项时,我添加了一个子 Fragment,它是该行的详细 View 。

那个细节 View 是一个 ScrollView,里面有一个 LinearLayout。 ScrollView 是 match_parent/match_parent,其中的 LinearLayout 是 width=match_parentheight=wrap_content。在手机大小的模拟器上,详细 View 会根据需要填充屏幕,但在平板电脑上,详细 View 仅覆盖屏幕的部分宽度......即使 ScrollView 的宽度和 LinearLayout 的宽度是都 match_parent。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rootView" style="@style/RootScrollView">

<LinearLayout android:id="@+id/scrollContentView" style="@style/ScrollViewContent">
...
</LinearLayout>
</ScrollView>

这是 ScrollView 的样式:

<style name="RootScrollView">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
</style>

这是内容LinearLayout的样式:

<style name="ScrollViewContent">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:paddingLeft">15dp</item>
<item name="android:paddingRight">15dp</item>
<item name="android:orientation">vertical</item>
<item name="android:background">@drawable/image_legal_paper_tile</item>
</style>

内容 View 有一个重复的背景 image_legal_paper_tile 这是这样的:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/legal_paper_tile"
android:gravity="fill_horizontal"
android:tileMode="repeat" />

因此,图像应该水平拉伸(stretch)并重复,这会在背景中创建一个黄色的法律纸垫。

这是列表和详细 View 看起来像手机模拟器的样子:

enter image description here

这是真实平板电脑上的列表和详细信息 View 。黄色的便笺簿 fragment 应该填满屏幕的整个宽度,但事实并非如此。

enter image description here

编辑:

这是法律文件的背景图片:

enter image description here

它的宽度为 320 像素。手机模拟器的宽度为 480 像素,并且图像可以正确拉伸(stretch)以填充屏幕的宽度。然后它按预期垂直重复。但是,它不会拉伸(stretch)以填充平板电脑屏幕的宽度。

平板电脑上显示的宽度不是图像的原始大小,因为它会根据内容改变大小。当 fragment 第一次加载时,它是一个宽度。然后我填写字段并执行在内容 View 底部添加一些文本的计算。该文本比现有内容更宽,因此当设置文本时, fragment 的宽度会增加以支持更宽的内容。

所以,简而言之,不,平板电脑上的宽度不是图像的原始尺寸。图像正在拉伸(stretch),只是没有一直拉伸(stretch)。

最佳答案

在 ScrollView 上使用 android:fillViewport="true" 并为 ScrollView 的子级使用 android:height="wrap_content"。如果您想拥有许多具有不同属性的 child ,请将主要 child 作为容器。将其设置为 wrap_content 并将其子级设置为 match_parent

示例:

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">

<LinearLayout
android:id="@+id/dynamic_frame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<LinearLayout
android:id="@+id/dimrix_sub_child"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:visibility="gone" >
</LinearLayout>

<LinearLayout
android:id="@+id/dimrix_sub_child_21"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:visibility="gone" >
</LinearLayout>
</LinearLayout>
</ScrollView>

在这个例子中,我可以在代码中为每个 child 设置可见性,它会按照你的意愿匹配 parent 。

关于android - ScrollView 中的 View 与配置的父级不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15466162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com