有谁知道如何使用 RecyclerView 进行流式布局?
Does anyone know how to do flow layout using RecyclerView?
有谁知道如何使用 RecyclerView 做流式布局?
如何动态更改跨度数?
您可以使用 FlowLayout 并将其作为 ScrollView 的子项。
存储库中提供了流程布局示例。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.wefika.flowlayout.FlowLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start|top"
android:minHeight="50dp">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button" />
</com.wefika.flowlayout.FlowLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello world" />
</LinearLayout>
</ScrollView>
您还可以使用示例中给出的以下方法以编程方式添加或删除视图。
public void addItem(View view) {
int color = getResources().getColor(R.color.holo_blue_dark);
View newView = new View(this);
newView.setBackgroundColor(color);
FlowLayout.LayoutParams params = new FlowLayout.LayoutParams(100, 100);
params.rightMargin = 10;
newView.setLayoutParams(params);
mFlowLayout.addView(newView);
}
public void removeItem(View view) {
mFlowLayout.removeView(getLastView());
}
public void toggleItem(View view) {
View last = getLastView();
if(last.getVisibility() == View.VISIBLE) {
last.setVisibility(View.GONE);
} else {
last.setVisibility(View.VISIBLE);
}
}
private View getLastView() {
return mFlowLayout.getChildAt(mFlowLayout.getChildCount() - 1);
}
这是完整的例子
使用 custom Library 就像 List GitHubLibrary TagLayout
- 示例代码:-
mFlowLayout.setAdapter(new TagAdapter<String>(mVals)
{
@Override
public View getView(FlowLayout parent, int position, String s)
{
TextView tv = (TextView) mInflater.inflate(R.layout.tv,
mFlowLayout, false);
tv.setText(s);
return tv;
}
});
使用下面的代码,您可以预先设置您想要的选择:-
mAdapter.setSelectedList(1,3,5,7,8,9);
将显示如下结果:-
最佳解决方案是将 RecyclerView 与 google FlexLayoutManager
一起使用
// Set layout manager
val layoutManager = FlexboxLayoutManager(context)
recyclerview.layoutManager = layoutManager
// Now you can add your normal recyclerview adapter
recyclerview.adapter = MyListAdapter(list)
在您的 build.gradle 文件中添加以下依赖项
implementation 'com.google.android:flexbox:2.0.1'
这会很有效。
有谁知道如何使用 RecyclerView 做流式布局?
如何动态更改跨度数?
您可以使用 FlowLayout 并将其作为 ScrollView 的子项。 存储库中提供了流程布局示例。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.wefika.flowlayout.FlowLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start|top"
android:minHeight="50dp">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button" />
</com.wefika.flowlayout.FlowLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello world" />
</LinearLayout>
</ScrollView>
您还可以使用示例中给出的以下方法以编程方式添加或删除视图。
public void addItem(View view) {
int color = getResources().getColor(R.color.holo_blue_dark);
View newView = new View(this);
newView.setBackgroundColor(color);
FlowLayout.LayoutParams params = new FlowLayout.LayoutParams(100, 100);
params.rightMargin = 10;
newView.setLayoutParams(params);
mFlowLayout.addView(newView);
}
public void removeItem(View view) {
mFlowLayout.removeView(getLastView());
}
public void toggleItem(View view) {
View last = getLastView();
if(last.getVisibility() == View.VISIBLE) {
last.setVisibility(View.GONE);
} else {
last.setVisibility(View.VISIBLE);
}
}
private View getLastView() {
return mFlowLayout.getChildAt(mFlowLayout.getChildCount() - 1);
}
这是完整的例子 使用 custom Library 就像 List GitHubLibrary TagLayout
- 示例代码:-
mFlowLayout.setAdapter(new TagAdapter<String>(mVals)
{
@Override
public View getView(FlowLayout parent, int position, String s)
{
TextView tv = (TextView) mInflater.inflate(R.layout.tv,
mFlowLayout, false);
tv.setText(s);
return tv;
}
});
使用下面的代码,您可以预先设置您想要的选择:-
mAdapter.setSelectedList(1,3,5,7,8,9);
将显示如下结果:-
最佳解决方案是将 RecyclerView 与 google FlexLayoutManager
一起使用// Set layout manager
val layoutManager = FlexboxLayoutManager(context)
recyclerview.layoutManager = layoutManager
// Now you can add your normal recyclerview adapter
recyclerview.adapter = MyListAdapter(list)
在您的 build.gradle 文件中添加以下依赖项
implementation 'com.google.android:flexbox:2.0.1'
这会很有效。