首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全边界GridLayoutManager

全边界GridLayoutManager
EN

Stack Overflow用户
提问于 2019-08-26 12:55:16
回答 1查看 872关注 0票数 1

有一个RecyclerView和GridLayoutManager。每一行负责显示三项。预期的视图是,所有与每个项目,应覆盖完整的边框,没有额外的粗体(4侧相等的宽度)。回收者视图的代码。无论我已经尝试过的方法和相应的界面屏幕也附加。

代码语言:javascript
复制
    mHomeRecyclerView = findViewById(R.id.home_screen_recycler_view);
    mHomeAdapter = new HomeScreenAdapter(this, mHomeScreenItem);

    // to provide scrolling functionality to parent
    mHomeRecyclerView.setNestedScrollingEnabled(false);
    mHomeRecyclerView.setHasFixedSize(true);
    GridLayoutManager layoutManager = new GridLayoutManager(this,3);
    mHomeRecyclerView.setLayoutManager(layoutManager);
    mHomeRecyclerView.setAdapter(mHomeAdapter);

适配器类的onCreateViewHolder()

代码语言:javascript
复制
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): 
RecyclerView.ViewHolder {
    mLayoutInflater = LayoutInflater.from(mContext)
    return HomeItemViewHolder(mLayoutInflater.inflate
    (R.layout.layout_home_child_item, parent, false))
}
代码语言:javascript
复制
layout_home_child_item.xml code is below

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/child_item_parent"
    android:layout_width="match_parent"
    android:layout_height="@dimen/one_not_seven_dp"
    android:padding="@dimen/image_select_tag_layout_padding"
    android:background="@drawable/shape_sub_category"
    android:clickable="true"
    android:gravity="center"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/child_item_image"
        android:layout_width="@dimen/each_item_dimen"
        android:layout_height="@dimen/each_item_dimen" />

    <TextView
        android:id="@+id/child_item_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/image_icon_in_margin"
        android:textSize="@dimen/small_text_size"
        android:textColor="@color/result_received_icon_color"
        android:maxLines="1"
        android:ellipsize="end"
        android:gravity="center" />

</LinearLayout>

如下所示的shape_sub_category.xml

代码语言:javascript
复制
<item android:id="@android:id/mask">
    <shape android:shape="rectangle">
        <solid android:color="@color/colorPrimaryDark" />
        <corners android:radius="@dimen/search_card_margin" />
    </shape>
</item>

<item android:id="@android:id/background">
    <shape android:shape="rectangle">
        <stroke
            android:width="@dimen/item_background_border_width"
            android:color="@color/grid_border_clr" />
        <solid android:color="@android:color/transparent" />
    </shape>
</item>

但预期的UI如下所示(相同厚度的完全覆盖边框)

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-27 12:11:11

要求提供一组网格内容,每个内容的边框应该与上面所附的屏幕截图的厚度相同。

为了用RecyclerView解决这个问题,我想出了不同的方法(类似于其他逻辑方法)。在这里,我描述我是如何实现同样的目标的。

  1. 为RecyclerView创建完整的外部边框,位于RecyclerView的布局下面,并绘制相应的边框。 “android:background="@drawable/recycler_border”android:layout_marginTop="@dimen/send_cmd_round_rect“android:layout_marginLeft="@dimen/send_cmd_round_rect”android:layout_marginRight="@dimen/send_cmd_round_rect“android:layout_marginBottom="@dimen/send_cmd_round_rect”android:clipToPadding=“

recycler_border.xml如下所示

代码语言:javascript
复制
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke
        android:width="@dimen/item_background_border_width"
        android:color="@color/grid_border_clr" />
    <solid android:color="@android:color/transparent" />
</shape>

通过上面的代码更改,我们可以观察到RecyclerView布局的外部边框。

  1. 为了为子项目提供边框,我们将使用GridDividerItemDecoration类.此项装饰类期望垂直和水平可绘制,以及RecyclerView网格中的列数。

Drawable horizontalDivider = ContextCompat.getDrawable(this, R.drawable.line_divider); Drawable verticalDivider = ContextCompat.getDrawable(this, R.drawable.line_divider); mHomeRecyclerView.addItemDecoration(new GridDividerItemDecoration(horizontalDivider, verticalDivider, 3));

line_divider是一种自定义绘图,用于提供如下所示的行规范。

代码语言:javascript
复制
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
    android:width="@dimen/item_background_border_width"
    android:height="@dimen/item_background_border_width" />
<solid android:color="@color/grid_border_clr" /></shape>
  1. 为了访问GridDividerItemDecoration,我们需要在应用程序的build.gradle中添加依赖项。 compile 'com.bignerdranch.android:simple-item-decoration:1.0.0' 输出屏幕截图附在下面(宽度为0.3dp)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57658321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档