Android 在线性布局中添加填充顶部

Android 在线性布局中添加填充顶部,android,android-layout,Android,Android Layout,这是我的线性布局: 它离顶端太近了。我正试图在顶部增加一些空间。我试过使用android:paddingTop,但没有用。如何在线性布局的顶部添加空间 XML: 根据您在图像中显示的内容,您可能已经指定了android:padding为所有四条边添加填充。如果是这样的话,添加android:paddingTop将一事无成;系统将忽略该属性,而选择通用的android:padding 例如,如果您当前有android:padding=“16dp”,则必须将其删除并替换为以下内容: android:

这是我的线性布局:

它离顶端太近了。我正试图在顶部增加一些空间。我试过使用android:paddingTop,但没有用。如何在线性布局的顶部添加空间

XML:


根据您在图像中显示的内容,您可能已经指定了
android:padding
为所有四条边添加填充。如果是这样的话,添加android:paddingTop将一事无成;系统将忽略该属性,而选择通用的
android:padding

例如,如果您当前有
android:padding=“16dp”
,则必须将其删除并替换为以下内容:

android:paddingTop="32dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingBottom="16dp"
<dimen name="extra_padding">32dp</dimen>
<dimen name="normal_padding">16dp</dimen>
val paddingTop = when (position) {
    0 -> resources.getDimensionPixelSize(R.dimen.extra_padding)
    else -> resources.getDimensionPixelSize(R.dimen.normal_padding)
}

view.setPadding(view.paddingLeft, paddingTop, view.paddingRight, view.paddingBottom)

如果您使用的是
ListView
,并且只想在第一个项目上方添加一些间距,那么情况就不同了。您没有将
paddingTop
添加到项目视图中,而是有一些选择

列表视图上填充
将这两个属性添加到
列表视图
回收视图
标记中:

android:paddingTop="32dp"
android:clipToPadding="false"
这是目前为止最简单的解决方案,但它会影响滚动条的绘制方式,这可能是您不喜欢的

将标题视图添加到
列表视图
为标题视图创建布局文件。如果您只想在顶部留出一些额外的空间,我建议使用
标记:

<Space
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="32dp"/>
默认情况下,分隔符仍将显示在此标题和第一个列表项之间。如果您不想这样做,可以禁用它:

listView.setHeaderDividersEnabled(false)
getView()中的动态填充
在适配器的
getView()
方法中,可以根据项目的
位置以编程方式设置填充。首先,像这样定义两个
dimen
资源:

android:paddingTop="32dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingBottom="16dp"
<dimen name="extra_padding">32dp</dimen>
<dimen name="normal_padding">16dp</dimen>
val paddingTop = when (position) {
    0 -> resources.getDimensionPixelSize(R.dimen.extra_padding)
    else -> resources.getDimensionPixelSize(R.dimen.normal_padding)
}

view.setPadding(view.paddingLeft, paddingTop, view.paddingRight, view.paddingBottom)

因此,这起作用,增加了一个填充顶部。但它为每个单独的项目添加了填充顶部。我如何只将填充顶部添加到版面中,而不添加它包含的项目?您能否在问题中添加版面的xml源代码和它现在的外观图片?我在这里使用
ListView
RecyclerView
?看起来你在重复同样的
线性布局
+five
文本视图
“小部件”。@Efaz我已经更新了答案