标签: gridlayoutmanager

如何从右到左填充RecyclerView和GridLayoutManager

我试图填补一些数据到一个RecyclerViewGridLayoutManager:

GridLayoutManager layoutManager = new GridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false);
Run Code Online (Sandbox Code Playgroud)

这将从左到右将数据填充到网格中.第一项将被放入左上角等地方.

但我正在开发的应用程序是专为RTL语言设计的,所以我需要从右到左填充它.

我试图改变最后一个参数true.但它只是RecyclerView一直向下滚动.

设置layoutDirection属性RecyclerView也不起作用(不考虑我的min API为16,并且为API17 +添加了此属性):

<android.support.v7.widget.RecyclerView
        android:id="@+id/grid"
        android:layoutDirection="rtl"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
Run Code Online (Sandbox Code Playgroud)

如何使用RecyclerView?创建一个右到左填充网格?

android right-to-left gridlayoutmanager android-recyclerview

27
推荐指数
3
解决办法
5703
查看次数

带有CardView的RecyclerView 2列

我的布局有问题.我正在尝试做这样的事情:

图片

现在,我有一个带有CardView内部的RecyclerView .在CardView我已经放了一个ImageView和一个TextView,但我不知道为什么,但CardView比它内部的ImageView更高.

这是代码和示例图像.

图片

这是代码:活动

public class AddRoomActivity extends AppCompatActivity implements View.OnClickListener {

private View snackView;
private FloatingActionButton fabDoneAddRoom;
private EditText etRoomName;
private String roomName = null;
public final static String KEY_PI_IP = "MyPi_IP";
private final static String KEY_ROOM = "myRoom";
private final static String KEY_ROOM_TYPE = "myRoom_Type";

private RecyclerView typeRecyclerView;
private GridLayoutManager layoutManager;
private AddRoomActivity.TypeAdapter adapter;


private String myPi;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_room);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    fabDoneAddRoom = …
Run Code Online (Sandbox Code Playgroud)

android imageview android-cardview gridlayoutmanager android-recyclerview

26
推荐指数
3
解决办法
3万
查看次数

如何在GridLayoutManager中设置项目行的高度

目前的观点是

我的Recycler项目在onCreateViewHolder中膨胀

<?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:gravity="center"
    android:orientation="vertical"
    android:padding="16dp">

    <ImageView
        android:id="@+id/gridListImageView"
        android:layout_width="96dp"
        android:layout_height="96dp"
        android:src="@drawable/a" />

    <TextView
        android:id="@+id/gridListView_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我想显示这样的东西, 哪一行有一半高度的回收者View?并在其余空间添加填充?我可以通过GridLayoutManager来做到这一点吗?

这是我的GridLayoutManager

        GridLayoutManager glm = new GridLayoutManager(getActivity(), 2);
        recyclerView.setLayoutManager(glm);
Run Code Online (Sandbox Code Playgroud)

android gridlayoutmanager android-recyclerview

25
推荐指数
5
解决办法
5万
查看次数

RecyclerView GridLayoutManager具有全宽标题

我在这里使用一个非常有用的示例来显示RecyclerView和GridLayoutManager以显示带有标题的网格.

它看起来很不错,但我的平面设计师希望标题项占据RecyclerView的整个宽度.现在有填充.

当我设置GridLayoutManager时,我添加填充(我仍然想要其他网格项):[它正在使用Xamarin C#]

var numColumns = myListView.MeasuredWidth / tileSizeMax;
myGridView.SetPadding(tilePadding, tilePadding, tilePadding, tilePadding);
layoutManager = new GridLayoutManager(Activity, numColumns);
myListView.SetLayoutManager(layoutManager);
Run Code Online (Sandbox Code Playgroud)

那么,如何将标题项的填充设置为不同...或者使其在填充上绘制?

android gridlayoutmanager android-recyclerview

25
推荐指数
1
解决办法
1万
查看次数

如何使RecyclerView顺利滚动?

这更像是一个通用的问题,但经过大量的搜索和尝试,我无法理解为什么这么难实现.是我能找到的最接近的答案,但仍然无法实现.

具体来说,我正在使用RecyclerView和GridLayoutManager.我想要的是平滑滚动的网格布局(如默认的gallary应用程序),没什么特别的,但网格布局管理器的默认实现以"生涩"的方式滚动视图.我试图从上面的链接实现该方法,但没有成功.

我也尝试实现LinearSmoothScroller,但我不确定如何实现computeScrollVectorForPosition方法.关于computeScrollVectorForPosition的Google文档字面上有0个字.

我找到了这个3部分的教程,但它没什么帮助.所以,我想问的是:我们可以在LinearSmoothScroller中实现某种模板代码,还是扩展RecyclerView.SmoothScroller并实现平滑滚动?即使代码依赖于gridlayout中每行的项目数和项目数,也必须有一些方法可以轻松完成.我在这里错过了什么吗?

android smooth-scrolling gridlayoutmanager android-recyclerview

24
推荐指数
5
解决办法
3万
查看次数

使用RecyclerView GridLayoutManager通过ItemDecoration创建列间距时,项目的宽度不同

我正在尝试使用RecyclerViewGridLayoutManager制作一个3列网格,我ItemDecoration用来制作列间距,现在问题是第三列中项目的宽度小于第一列和第二列中的项目!请参阅下面的屏幕截图.

在此输入图像描述

如果我不添加自定义ItemDecorationRecyclerView,一切都OK了.

这是我的代码:

MainActivity.java:

public class MainActivity extends AppCompatActivity {

    private RecyclerView mRecyclerView;
    private MyAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        mAdapter = new MyAdapter();
        mRecyclerView.setAdapter(mAdapter);

        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
        mRecyclerView.setLayoutManager(gridLayoutManager);

        int horizontalSpacing = 20;
        int verticalSpacing = 10;
        SpacingDecoration decoration = new SpacingDecoration(horizontalSpacing, verticalSpacing, true);
        mRecyclerView.addItemDecoration(decoration);
    }


    private static class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

        private int[] mColors = new int[]{Color.RED, …
Run Code Online (Sandbox Code Playgroud)

java android gridlayoutmanager android-recyclerview

18
推荐指数
1
解决办法
1万
查看次数

Recyclerview同时绑定所有视图

GridLayoutManager在另一个Recyclerview(with LinearLayoutManager)中有一个垂直的Recyclerview(带有a ).我现在面临的问题是,内部的recyclerview(使用GridLayoutManager)同时绑定它的所有项目,甚至是当前不在屏幕上的视图(onBindViewHolder()被调用所有项目).

为了给你提供更多信息,在我的布局文件中,我把我的Recycler视图的高度设置为wrap_content.

我认为问题是,因为有2个嵌套的垂直回收视图,当父RV想要测量它的子节点并且子节点是另一个RV时,onMeasure()它计算整个RV所需的大小,而不仅仅是它想要绑定的部分屏幕上.

不知道怎么解决这个问题?

这是我的外部recyclerview的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/component_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

以下是我的内部回收者视图的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/gutter"
android:paddingBottom="@dimen/gutter">

<TextView
    android:id="@+id/title_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="@dimen/gutter"
    android:textSize="30sp"
    android:textColor="@android:color/white"
    android:fontFamily="sans-serif-thin"/>

<android.support.v7.widget.RecyclerView
    android:id="@+id/my_slider"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

PS:我正在使用此适配器委托进行外部回收查看:https: //github.com/sockeqwe/AdapterDelegates

android gridlayoutmanager android-recyclerview nestedrecyclerview

17
推荐指数
2
解决办法
2990
查看次数

更改RecyclerView gridlayout中的列数

我正在尝试根据显示大小更改回收器视图(网格布局)中显示的列数.但是我无法找到实现它的正确方法.目前我正在使用treeViewObserver根据屏幕大小的变化(在定向期间)更改列数.因此,如果应用程序以纵向模式打开,列数(在手机上)它决定为一个,看起来不错,但当应用程序直接以横向模式打开时,此方法不起作用,其中网格中有单个拉出的卡片显示在屏幕上.

这里recList是RecyclerView&glm是RecyclerView中使用的GridLayoutManager

    viewWidth = recList.getMeasuredWidth();

    cardViewWidthZZ = recList.getChildAt(0).getMeasuredWidth();

    if (oldWidth == 0) {
        oldWidth = cardViewWidthZZ;
    }

    if (oldWidth <= 0)
        return;

    int newSpanCount = (int) Math.floor(viewWidth / (oldWidth / 1.3f));
    if (newSpanCount <= 0)
        newSpanCount = 1;
    glm.setSpanCount(newSpanCount);
    glm.requestLayout();
Run Code Online (Sandbox Code Playgroud)

最好的祝福

android gridlayoutmanager

16
推荐指数
2
解决办法
2万
查看次数

在回收站视图Gridlayout管理器中创建总线布局时出现间距问题

我正在使用GirdLayout Manager的Recycler视图来创建总线布局

我的问题是间距我根据行列填充数据

这就是我如何获得布局 在此输入图像描述

这就是我想要的布局: 在此输入图像描述

我希望第2行第0列旁边的第3行和第2列的项目如图所示,如何删除该空间,项目应根据其上部项目进行调整.

 customGridAdapter = new CustomGridViewAdapter(getActivity(), busSeatModel, false, fareCategory, BusSeatLayout.this);
                        RtlGridLayoutManager gridLayoutManager = new RtlGridLayoutManager(getActivity(), busSeatModel.getMaxLowerColumn());
                        seatLayout.setLayoutManager(gridLayoutManager);
                        seatLayout.setAdapter(customGridAdapter);
Run Code Online (Sandbox Code Playgroud)

这是我的customGridAdapter onBindViewHolder

public class CustomGridViewAdapter extends RecyclerView.Adapter<CustomGridViewAdapter.MyViewHolder> {

Context context;
BusSeatModel busSeatModel;
HashMap<Integer, HashMap<Integer, BusSeatItemModel>> data = new HashMap<>();
LayoutInflater inflater;
boolean upper;
HashMap<Integer, BusSeatItemModel> seatLowerModels;
BusSeatItemModel lowerModel;
int maxColumn = 0;
int maxRow = 0;
BusSeatLayout busSeatLayout;
int fare;

public CustomGridViewAdapter(Context context, BusSeatModel busSeatModel, boolean upper, int fare, BusSeatLayout busSeatLayout) {
    this.context = context;
    this.busSeatModel = busSeatModel; …
Run Code Online (Sandbox Code Playgroud)

android gridlayoutmanager staggeredgridlayout android-recyclerview

15
推荐指数
1
解决办法
956
查看次数

如何实现水平gridlayoutmanager

如何使用recyclerview实现水平gridlayoutmanager.固定行数.和水平滚动.像这样...

水平滚动图

        gridLayoutManager = new GridLayoutManager(getContext(), 1, GridLayoutManager.HORIZONTAL, false);
    recyclerView.setLayoutManager(gridLayoutManager);
    recyclerView.setHasFixedSize(true);
Run Code Online (Sandbox Code Playgroud)

我试着这样做.但这并没有在项目中显示任何内容.

android gridlayoutmanager android-recyclerview

14
推荐指数
1
解决办法
2万
查看次数