我正在尝试使用setSpanSizeLookup
GridLayoutManager
进行此类布局。
有没有人知道如何通过计算项目的宽度自动调整项目并自动调整像图像?
如果还有其他方式,请建议我。
以下是一些代码:
int maxWidth = 1040; // device width
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
LayoutInflater vi = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View v = vi.inflate(R.layout.row_favorite, null);
final TextView textView = (TextView) v.findViewById(R.id.tv_name);
int itemWidth = (int) (textView.getPaint().measureText(favoriteList.get(position).getName()));
if ((maxWidth / 2) / 3 > itemWidth) {
return 1;
} else if ((maxWidth / 2) / 3 < itemWidth && maxWidth / 3 > itemWidth) {
return 2;
} else if (maxWidth / 2 > itemWidth && maxWidth / 3 < itemWidth) {
return 3;
}
}
});
答案 0 :(得分:1)
我们现在可以选择FlexboxLayout
。
对于布局,
<com .google.android.flexbox.flexboxlayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:flexwrap="wrap">
我们还有recyclerView
FlexboxLayoutManager layoutManager = new FlexboxLayoutManager();
享受.. !!
答案 1 :(得分:0)
添加flexbox依赖
编译com.google.android:flexbox:0.3.1&#39;
并设置 FlexboxLayoutManager
FlexboxLayoutManager layoutManager = new FlexboxLayoutManager(context);
layoutManager.setFlexDirection(FlexDirection.ROW);
layoutManager.setJustifyContent(JustifyContent.CENTER);
recyclerview.setLayoutManager(layoutManager);