我在使用StickyGridHeaders库时发现了一种奇怪的行为。就像任何列表项一样,库允许我们使用任何布局作为标题视图。这是我的标题视图布局定义:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#228B22"
android:orientation="vertical" >
<TextView
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="25dp"
android:paddingBottom="4dp"
android:paddingLeft="4dp"
android:layout_marginTop="4dp"
android:textColor="#ffffff"
android:background="#FF8C00"
android:textSize="15sp"
android:textStyle="bold" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="6dp"
android:background="#00FFFF" >
</FrameLayout>
</LinearLayout>
标题视图非常简单:标题的TextView和下面的分隔符。
但是,在我的设备中调试(运行4.4.2 KitKat)时,标题看起来很奇怪。我没有足够的信誉发布图片,请click here查看图片(托管在Google云端硬盘中)。
我在布局中添加了背景颜色来说明问题。在屏幕截图中,标题“A”是粘性的,并且显示正确。但是,对于非粘性标题,如“B”和“C”,您可以看到标题的宽度和分隔符不正确。 TextView和FrameLayout的宽度都在xml文件中设置为“match_parent”,但在屏幕截图中,非粘性标题的TextView显示为好像它们被设置为“wrap_content”。更奇怪的是分隔符 - 我尝试使用不同的文本作为标题,结果是分隔符的宽度与其上方的TextView的(不正确的)宽度完全对齐,而不是父级的可用宽度!
起初我以为我错误地写了布局。然后,当我将库示例复制到新项目时,我发现问题仍然存在。所以我转向SDK版本,并尝试将目标SDK版本更改为17.令我惊讶的是,一切看起来都正确。 (Click here for screenshot)
然后我将目标SDK版本提升到18,问题再次出现。
据我所知,不同SDK版本的布局可能有所不同,但我不明白为什么“match_parent”在较新的SDK版本中表现不同。
答案 0 :(得分:0)
不确定是否有人遇到过和我一样的问题,但我终于发现了什么错误: maven存储库中的StickyGridHeaders库与Github上的不匹配。前者应该是一个旧版本,因为我用Github上的库替换了库后,问题就消失了。