在配置中,ScrollView中的视图并未与父级匹配。

11 浏览
0 Comments

在配置中,ScrollView中的视图并未与父级匹配。

我有一个ViewPager和一个带有选项卡的ActionBar。其中一个选项卡包含一个ListView,在该ListView中,当我点击其中一个选项时,我会添加一个子Fragment,该子Fragment是该行的详细视图。

该详细视图是一个ScrollView,其中包含一个LinearLayout。ScrollView的属性是match_parent/match_parent,而LinearLayout的属性是width=match_parent和height=wrap_content。在手机尺寸的模拟器上,详细视图按预期填满屏幕,但是在平板电脑上,详细视图只覆盖了屏幕宽度的一部分...尽管ScrollView的宽度和LinearLayout的宽度都是match_parent。

以下是ScrollView的样式:

以下是内容LinearLayout的样式:

内容视图具有一个重复的背景image_legal_paper_tile,其内容如下:

android:src="@drawable/legal_paper_tile"

android:gravity="fill_horizontal"

android:tileMode="repeat" />

因此,图像应该在水平方向上拉伸并重复,从而在背景中创建一个黄色的法律纸垫。

这是在手机模拟器上的列表和详细视图的样子:

enter image description here

这是在真实平板电脑上的列表和详细视图的样子。黄色法律纸垫的碎片应该填满整个屏幕宽度,但并没有。

enter image description here

编辑:

以下是背景法律纸图像:

enter image description here

它的宽度为320像素。手机模拟器的宽度为480像素,图像会正确地拉伸填满屏幕宽度,然后按照预期进行垂直重复。然而,在平板电脑上,它并没有拉伸以填满屏幕宽度。

平板电脑上显示的宽度不是图像的本机尺寸,因为它会根据内容的大小而变化。当片段首次加载时,它有一个宽度。然后我填写字段并执行计算,这会在内容视图底部添加一些文本。该文本的宽度大于现有内容,因此当设置文本时,片段的宽度会增加以支持更宽的内容。

简而言之,不,平板电脑上的宽度不是图像的本机尺寸。图像确实在拉伸,只是没有完全拉伸到最大。

0
0 Comments

在ScrollView上使用android:fillViewport="true",在ScrollView的子项上使用android:height="wrap_content"。如果您希望有许多具有不同属性的子项,请创建一个主子项作为容器。将其设置为wrap_content,其子项设置为match_parent。

示例:


    
        
        
        
        
    

在这个示例中,我可以在代码中设置每个子项的可见性,它将按照您的要求与父项匹配。

这对我来说非常有效。你能解释一下为什么这样能起作用吗?我很想知道。谢谢!

0
0 Comments

当在ScrollView中使用android:layout_height=”fill_parent”时,意味着“将高度设置为父容器的高度”。然而,在使用ScrollView时,这显然不是我们想要的。毕竟,如果ScrollView的内容始终与自身一样高,那么它将变得无用。为了解决这个问题,您需要使用ScrollView的属性android:fillViewport。当设置为true时,此属性会导致滚动视图的子项在需要时展开到ScrollView的高度。当子项高度大于ScrollView时,此属性则没有效果。

因此,解决这个问题的方法是在ScrollView中添加android:fillViewport="true"。这样,即使ScrollView的内容没有填满整个屏幕,也能保证ScrollView的高度与屏幕高度相匹配。

0
0 Comments

我遇到了一个类似的问题,并通过以下方式解决:
scrollView.setFillViewport(true);
[/apcode]

在Android开发中,我们经常会使用ScrollView来实现可滚动的视图。然而,在某些情况下,ScrollView的内容可能无法填满整个父容器的大小,即使我们已经设置了宽度和高度为match_parent。

这个问题的出现通常是由于ScrollView的一些配置问题导致的。在这种情况下,我们需要确保ScrollView的fillViewport属性设置为true。fillViewport属性定义了当ScrollView的内容不足以填满整个视图时,是否自动拉伸填满。

解决这个问题的方法非常简单,只需在代码中添加如下一行代码即可:

scrollView.setFillViewport(true);

这行代码将会告诉ScrollView在内容不足以填满整个视图时,自动拉伸填满。

通过添加这行代码,我们可以确保ScrollView的内容始终填满整个父容器的大小,解决了(View in ScrollView isn't matching parent as configured)这个问题。

0