java - 是否可以在 android listview 分隔符中添加 xml 布局?

标签 java android xml listview android-activity

我需要使用 xml 布局显示一些自定义分隔线。那么有没有可能这样做

<ListView
                    android:id="@+id/volunteer_list"
                    android:layout_width="match_parent"
                    android:divider="@layout/separator"
                    android:dividerHeight="5dp"
                    android:layout_height="wrap_content"/>

?

请检查附上的屏幕截图。在那里你可以看到自定义分隔线。就像我需要在 android 中设置的一样。非常欢迎您提出意见。 enter image description here

最佳答案

如果您使用的是 ListView,您当然可以遵循 Daryl 的回答。但是,即使在最后一项之后,分隔符也会在那里。我当然会建议切换到 RecyclerView,它是 ListView 的高级版本,具有更多的功能和特性。在 RecyclerView 中,这样做:

创建一个 line diveder 可绘制对象。 (根据需要更改大小和颜色)。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<size
    android:width="4dp"
    android:height="4dp"/>

<solid android:color="#d5d5d5" />

创建一个 DividerItemDecorator 类。

public class DividerItemDecorator extends RecyclerView.ItemDecoration {
private Drawable mDivider;

public DividerItemDecorator(Context context) {
    mDivider = ContextCompat.getDrawable(context, R.drawable.line_divider);
}

@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
    int left = parent.getPaddingLeft();
    int right = parent.getWidth() - parent.getPaddingRight();

    int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
        View child = parent.getChildAt(i);

        RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();

        int top = child.getBottom() + params.bottomMargin;
        int bottom = top + mDivider.getIntrinsicHeight();

        mDivider.setBounds(left, top, right, bottom);
        mDivider.draw(c);
    }
}

最后,使用这行代码在 Recycler View 中设置 DividerItemDecorator :

recyclerView.addItemDecoration(new DividerItemDecorator(getApplicationContext()));

关于java - 是否可以在 android listview 分隔符中添加 xml 布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42969999/

相关文章:

java - 由于我的全局变量而出现 NullPointerException

java - 多线程中如何获取锁以及在哪个对象上获取锁?

java - 将 Android 应用程序移植到 Windows 的最佳方法是什么?

java - thymeleaf , Spring : stuck on creating a single item view

java - Android NDK 回调到 Java Activity

Java - 根据节点的属性编辑节点元素

android - 在 GoogleMaps、Android 中禁用放大镜

android - 如何复制应用程序?

java - 当同级元素具有相同名称但不同属性时,如何使用 Java 和 Xerces NodeIterator 获取同级元素

xml - Perl XML::LibXML 文本内容