当前位置: 首页 > 知识库问答 >
问题:

Android gridview行分隔器/分隔符

濮佑运
2023-03-14

有没有办法在gridview中显示行之间的(水平)分隔线?

我试着在每个网格项目下面放置一个小的分隔线,但是这不是一个解决方案,因为当一行没有完全填满项目时,它不会跨越整行。

有没有办法在每一行之间添加一个图像?我只能找到改变行之间空间的方法。

共有3个答案

况庆
2023-03-14

只是想分享一下我是如何使用OP接受的链接实现的。对于我来说,我还需要控制分隔符的长度,所以我无法绕开子类< code>GridView。

public class HorizontalSeparatorGridView extends GridView {

    // Additional methods 

    @Override
    protected void dispatchDraw(Canvas canvas) {

        final int count = getChildCount();
        for(int i = 0; i < count; i++) {
            View child = getChildAt(i);
            int bottom = child.getBottom();
            int left = child.getLeft();
            int right = child.getRight();

            Paint paint = new Paint();
            paint.setColor(0xffececec);

            paint.setStrokeWidth(Math.round(0.5 * density));

            int offset = // Some offset

            canvas.drawLine(left + offset, bottom, right - offset, bottom, paint);
        }


        super.dispatchDraw(canvas);
    }

为了安全起见,我子类化了< code>dispatchDraw,而不是< code>onDraw,但我认为这在这种情况下无关紧要。

俞博涛
2023-03-14

我最终创建了一个自定义gridview,类似这样:

https://stackoverflow.com/a/9757501/1310343

使用与我的gridview中的一个项目一样高的背景图像,并且底部有一个devider。

作品就像一个魅力!

刘嘉木
2023-03-14

如果要对网格项使用自定义布局。下面的代码将起作用。

这将用作分隔符。
水平间距垂直间距作为1dp
背景颜色将是您的分隔符颜色。

<GridView
        android:id="@+id/gridView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#e5e5e5"
        android:horizontalSpacing="1dp"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth"
        android:verticalSpacing="1dp" >

这将作为 GridItems 的前景色。
在我的情况下,我保持白色(#fff)

<?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:orientation="vertical"
    android:gravity="center"
    android:background="#fff"
    android:padding="15dp"
     >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/ic_launcher_transparent" />

    <TextView
        android:id="@+id/lable"
        android:layout_marginTop="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Medium Text"
        android:textStyle="bold"
        android:textColor="#D0583B"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</LinearLayout>

注意:
如果您不想要垂直分隔符,请保持水平间距=0dp
如果您不想要水平分隔符,请保持垂直间距=0dp

 类似资料:
  • 1. 可以在一行中使用三个或更多的 *、- 或 _ 来添加分隔线(<hr>): *** ------ ___ * 2. 多个字符之间可以有空格(空白符),但不能有其他字符: * * * - - -

  • 你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号或是减号中间插入空格。下面每种写法都可以建立分隔线: * * * *** ***** - - - ---------------------------------------

  • 分隔符是一个或多个字符的序列,用于指定纯文本或其他数据中单独的独立区域之间的边界。 字段分隔符是逗号分隔值的序列。 好吧,分隔符分隔值是comma separated values (CSV)或tab-separated values (TSV)。 本章详细介绍了分隔符分隔值。 配置API (Configuring API) 我们可以使用以下语法轻松加载API。 <script src = "ht

  • 问题内容: 我有从.net应用程序A,B,C,D,E,F获取的字符串, 我想写一个SQL选择语句像 这在t-SQL中将不起作用,因为它使用不将值分开的一个字符串。有什么办法可以做到这一点? 问题答案: 它认为最简单的方法是动态SQL生成:

  • 我的程序中有很多textviews。我希望这些文本视图中的数字以3到3隔开。我应该为任何TextView编写代码吗?有没有一种方法可以编写一次代码并将其用于整个程序?谢谢你。

  • 我很难找到解决方法: 我想在我的场景图中有一个TableView,它将代表某个类(产品)。该类有一个字符串类型字段,我想使用它来对产品进行分类。因此,我想在循环中填充TableView,添加所有产品,同时在每种特定类型的产品之前添加一个“类别”行。 所以如果我有10个产品,假设其中6个是“酒精”类型,其余是“食品”类型,TableView的第一行将其“名称”列设置为“ALCOHOL”,其余列将为空