RecyclerView 与 CardView 作为仪表板或类似 Windows Tiles
RecyclerView with CardView as Dashboard or like a Windows Tiles
我花了很多时间寻找解决方案 如何制作 Windows tiles liked interface,也称为 Dashboard。我想将 RecyclerView 与 CardView 一起使用。我找到了旧的解决方案,但是使用了带有按钮的 LinearLayout:How to create layout with 6 buttons like windows tiles
此刻我所拥有的:
我想要的:
我有六个 CardView,它们应该占据父级 RelativeLayout 的整个区域,并且无论屏幕宽度如何,它们的大小都相同。
在纵向模式下,我有 2 列,在横向模式下,我有 3 列。
recyclerView.setHasFixedSize(true);
int columns = resources.getConfiguration()
.orientation == Configuration.ORIENTATION_LANDSCAPE ? 3 : 2;
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getApplicationContext(), columns);
recyclerView.addItemDecoration(new GridSpacingItemDecoration(columns,
Utils.dpToPx(resources, 3), true));
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setLayoutManager(mLayoutManager);
我该怎么做?
一如既往,在我在这里写下一个问题后,过了一会儿,解决方案就会自动出现。这是我解决这个问题的方法
在您的 RecyclerView 适配器中:
@Override
public HomeTilesAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.home_tile_item, parent, false);
int h = parent.getHeight();
// margin - activity_vertical_margin
// rows - number of rows in diffrent display modes
h = (h - Math.round(margin*2))/rows;
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) itemView.getLayoutParams();
params.height = h;
itemView.setLayoutParams(params);
return new MyViewHolder(itemView);
}
这个决定解决了问题,但在这个过程中我遇到了另一个问题。在平板电脑上图标看起来很小,看起来不漂亮。我是如何解决这个问题的,你可以阅读这个 post:
结果
我花了很多时间寻找解决方案 如何制作 Windows tiles liked interface,也称为 Dashboard。我想将 RecyclerView 与 CardView 一起使用。我找到了旧的解决方案,但是使用了带有按钮的 LinearLayout:How to create layout with 6 buttons like windows tiles
此刻我所拥有的:
我想要的:
我有六个 CardView,它们应该占据父级 RelativeLayout 的整个区域,并且无论屏幕宽度如何,它们的大小都相同。
在纵向模式下,我有 2 列,在横向模式下,我有 3 列。
recyclerView.setHasFixedSize(true);
int columns = resources.getConfiguration()
.orientation == Configuration.ORIENTATION_LANDSCAPE ? 3 : 2;
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getApplicationContext(), columns);
recyclerView.addItemDecoration(new GridSpacingItemDecoration(columns,
Utils.dpToPx(resources, 3), true));
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setLayoutManager(mLayoutManager);
我该怎么做?
一如既往,在我在这里写下一个问题后,过了一会儿,解决方案就会自动出现。这是我解决这个问题的方法
在您的 RecyclerView 适配器中:
@Override
public HomeTilesAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.home_tile_item, parent, false);
int h = parent.getHeight();
// margin - activity_vertical_margin
// rows - number of rows in diffrent display modes
h = (h - Math.round(margin*2))/rows;
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) itemView.getLayoutParams();
params.height = h;
itemView.setLayoutParams(params);
return new MyViewHolder(itemView);
}
这个决定解决了问题,但在这个过程中我遇到了另一个问题。在平板电脑上图标看起来很小,看起来不漂亮。我是如何解决这个问题的,你可以阅读这个 post:
结果