我已经设置的,我需要一个显示图标RecyclerView
排列在网格中,使该网格滚动水平。 通常我会用GridLayoutManager
这样的事情,但我的要求是阻止我这样做。 也就是说,不仅该项目已被安排在网格中,但他们也需要被添加到由列行和列不网格行(这是怎么GridLayoutManager
做的话)。 因此,例如,如果网格是3x3的,我有4个项目,他们不应该采取的位置1,4,7和2位置,但1,2,3和4。
任何替代的RecyclerView
它可以让我做这项工作也欢迎。
我已经设置的,我需要一个显示图标RecyclerView
排列在网格中,使该网格滚动水平。 通常我会用GridLayoutManager
这样的事情,但我的要求是阻止我这样做。 也就是说,不仅该项目已被安排在网格中,但他们也需要被添加到由列行和列不网格行(这是怎么GridLayoutManager
做的话)。 因此,例如,如果网格是3x3的,我有4个项目,他们不应该采取的位置1,4,7和2位置,但1,2,3和4。
任何替代的RecyclerView
它可以让我做这项工作也欢迎。
您可以考虑使用HorizontalScrollView
为每个行。 我给你一个简单的实现。
你需要有项目的布局是每一行中第一。 让我们有类似下面的布局。
让我们有这样的布局。 让我们把它命名item_layout.xml
<?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:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some title" />
</LinearLayout>
现在,让我们来View
的动态加载这个布局类。
public class CustomItemView extends LinearLayout {
private Context context;
private TextView mTextView;
public CustomItemView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView(context);
}
public CustomItemView(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
}
public CustomItemView(Context context) {
super(context);
initView(context);
}
private void initView(Context context) {
this.context = context;
View v = inflate(context, R.layout.item_layout, null);
mTextView = (TextView) v.findViewById(R.id.title);
addView(v);
}
public void setTitle(String title) {
mTextView.setText(title);
}
}
现在,让我们有一个类里面填充的意见HorizontalScrollView
。
public class MyHorizontalScrollView {
HorizontalScrollView horizontalScrollView;
LinearLayout linearLayout;
Context context;
public MyHorizontalScrollView(final Context context) {
this.context = context;
initScrollView();
}
private void initScrollView() {
horizontalScrollView = new HorizontalScrollView(context);
HorizontalScrollView.LayoutParams params = new HorizontalScrollView.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
horizontalScrollView.setLayoutParams(params);
horizontalScrollView.setHorizontalScrollBarEnabled(false);
linearLayout = new LinearLayout(context);
LinearLayout.LayoutParams linearLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
linearLayout.setLayoutParams(linearLayoutParams);
horizontalScrollView.addView(linearLayout);
}
public LinearLayout addHorizontalScrollView(LinearLayout linearLayout) {
linearLayout.addView(horizontalScrollView);
return linearLayout;
}
public CustomItemView addNewEntryView(final String newTitle) {
CustomItemView customItemView = new CustomItemView(context);
customItemView.setTitle(newTitle);
linearLayout.addView(customItemView);
return customItemView;
}
}
现在得到LinearLayout
作为滚动视图架,并添加意见,以根据各行中要添加的项目。
在你的活动布局Activity
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:fillViewport="true">
<LinearLayout
android:id="@+id/scrollViewHolder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
现在,只需添加您HorizontalRecyclerView
这个LinearLayout
通过列表循环,三次在同一时间。
private LinearLayout mScrollViewHolder;
mScrollViewHolder = (LinearLayout) v.findViewById(R.id.scrollViewHolder);
MyHorizontalScrollView myHorizontalScrollView = new MyHorizontalScrollView(this.getContext());
myHorizontalScrollView.addHorizontalScrollView(mScrollViewHolder);
myHorizontalScrollView.addNewEntryView("Something");