我试图填补一些数据到一个RecyclerView与GridLayoutManager:
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
我的布局有问题.我正在尝试做这样的事情:

现在,我有一个带有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
我的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) 我在这里使用一个非常有用的示例来显示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)
那么,如何将标题项的填充设置为不同...或者使其在填充上绘制?
这更像是一个通用的问题,但经过大量的搜索和尝试,我无法理解为什么这么难实现.这是我能找到的最接近的答案,但仍然无法实现.
具体来说,我正在使用RecyclerView和GridLayoutManager.我想要的是平滑滚动的网格布局(如默认的gallary应用程序),没什么特别的,但网格布局管理器的默认实现以"生涩"的方式滚动视图.我试图从上面的链接实现该方法,但没有成功.
我也尝试实现LinearSmoothScroller,但我不确定如何实现computeScrollVectorForPosition方法.关于computeScrollVectorForPosition的Google文档字面上有0个字.
我找到了这个3部分的教程,但它没什么帮助.所以,我想问的是:我们可以在LinearSmoothScroller中实现某种模板代码,还是扩展RecyclerView.SmoothScroller并实现平滑滚动?即使代码依赖于gridlayout中每行的项目数和项目数,也必须有一些方法可以轻松完成.我在这里错过了什么吗?
android smooth-scrolling gridlayoutmanager android-recyclerview
我正在尝试使用RecyclerView和GridLayoutManager制作一个3列网格,我ItemDecoration用来制作列间距,现在问题是第三列中项目的宽度小于第一列和第二列中的项目!请参阅下面的屏幕截图.

如果我不添加自定义ItemDecoration到RecyclerView,一切都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) 我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
我正在尝试根据显示大小更改回收器视图(网格布局)中显示的列数.但是我无法找到实现它的正确方法.目前我正在使用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)
最好的祝福
我正在使用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
如何使用recyclerview实现水平gridlayoutmanager.固定行数.和水平滚动.像这样...
gridLayoutManager = new GridLayoutManager(getContext(), 1, GridLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(gridLayoutManager);
recyclerView.setHasFixedSize(true);
Run Code Online (Sandbox Code Playgroud)
我试着这样做.但这并没有在项目中显示任何内容.