I have a RecyclerView and a GridLayoutManager. The columns width are equal but I want the first column with 80dp
width. Is this possible?
Example: RecyclerView width 5 columns
final columnsCount = 5; recyclerView.width = 500dp column0.width = 80dp column 1-2-3-4 width = (recyclerview.width - column0.width) / columnsCount
Any advice?
Edit: code
public class TestRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private static final int VIEW_TYPE_START = 0; private static final int VIEW_TYPE_PROGRESS_ITEM = 1; private LayoutInflater inflater; public TestRecyclerViewAdapter(Context context) { this.inflater = LayoutInflater.from(context); } @Override public int getItemViewType(int position) { if (position == 0) { return VIEW_TYPE_START; } else { return VIEW_TYPE_PROGRESS_ITEM; } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final View view; switch (viewType) { case VIEW_TYPE_START: view = this.inflater.inflate(R.layout.view_item_small, parent, false); return new TestViewHolder(view); case VIEW_TYPE_PROGRESS_ITEM: view = this.inflater.inflate(R.layout.view_item, parent, false); return new TestViewHolder(view); } return null; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { } @Override public int getItemCount() { return 5; } }
view_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#0000FF" android:orientation="vertical">
view_item_small.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="80dp" android:layout_height="match_parent" android:background="#FF0000" android:orientation="vertical">
Usage:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview); recyclerView.setAdapter(new TestRecyclerViewAdapter(this)); recyclerView.setLayoutManager(new GridLayoutManager(this, 5)); }