Android额外保证金自动添加到列表视图行

时间:2017-03-25 12:24:04

标签: android android-layout listview

我在Android中创建了一个带有一些任意元素的ListView。 行布局从XML文件中膨胀。一切正常,但默认情况下每行都添加了额外保证金底部,我从未在任何地方提到过。

我故意将 ListView背景设置为绿色,将行背景设置为蓝色,将 RelativeLayout背景设置为红色。结果是每行都有 1 / 1.5 DP 边距底部。

这里绿色边框实际上是ListView的背景颜色,表明两行之间有一些差距。

这是Android ListView中的预期行为,如果是这样,为什么他们会自动将保证金底部添加到行? 以及如何消除/克服这种行为?

谢谢你,祝你有愉快的一天< 3

截图 -

enter image description here

MainActivity.java

package com.xxx.abcd;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String[] num = {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve"};
        ListView lv = (ListView) findViewById(R.id.lv);
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, R.layout.row, num);
        lv.setAdapter(arrayAdapter);
    }

}

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FF0000"
    tools:context="com.xxx.abcd.MainActivity">

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#00FF00">

    </ListView>
</RelativeLayout>

row.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/app_name"
    android:background="#214181"
    android:textColor="#FFFFFF"
    android:textSize="24sp"
    android:padding="10dp">

</TextView>

2 个答案:

答案 0 :(得分:1)

是的,是ListView的意图行为,对于recyclerview来说这不再是真的。

您必须按照此处指定的方式禁用分隔符:https://stackoverflow.com/a/1914588/802034

getListView().setDivider(null);
getListView().setDividerHeight(0);



android:divider="@null"
android:dividerHeight="0dp"

答案 1 :(得分:0)

所有这些都不是引起问题的边际。它是列表视图中的分隔符。

将其设为null。

 <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="#00FF00">
</ListView>