Android FlexBox布局仅显示固定行数

问题描述

我正在尝试构建一个单词对单词的RTL语言电子书应用程序。电子书的数据存储在Sqlite数据库中。经过大量搜索之后,我发现Flexbox布局适合我的需求,以便以所需的格式显示数据。以下链接为我提供了帮助:Android GridLayout with dynamic number of columns per row但是,问题在于,如果在视图中传递的数据很大,那么将显示部分数据。如果传递的数据很小,那么我根本就没有问题。

这是适配器代码:

public class VerseAdapter extends RecyclerView.Adapter<VerseAdapter.ViewHolder> {

private List<verseItem> items;
private Context context;
wordsAdapter sAdapter;
GridLayoutManager layoutManager;

public VerseAdapter(List<verseItem> items,Context context) {
    this.items = items;
    this.context = context;
}


// This method is used to attach
// custom layout to the recycler view
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
    View vw = LayoutInflater.from(parent.getContext()).inflate(R.layout.verse_row,parent,false);
    return new ViewHolder(vw);
}


// This method is used to set the action
// to the widgets of our custom layout.
@Override
public void onBindViewHolder(@NonNull ViewHolder holder,int position) {
    verseItem item = items.get(position);
    ArrayList<wordsModel> models = new ArrayList<>(item.getWordsModelList());
    String ayahnum = "" + item.getAyah();
    holder.ayah.setText(ayahnum);

    holder.verses_telugu.setText(item.getVerses_telugu());
    
    // FlexboxLayoutManager code:
    FlexboxLayoutManager layoutManager = new FlexboxLayoutManager(context);
    layoutManager.setFlexDirection(FlexDirection.ROW_REVERSE);
    layoutManager.setJustifyContent(JustifyContent.FLEX_START);
    ViewHolder.wordsrecyclerView.setLayoutManager(layoutManager);
    sAdapter = new wordsAdapter(models);
    ViewHolder.wordsrecyclerView.setAdapter(sAdapter);
    sAdapter.notifyItemChanged(position);

    holder.setIsRecyclable(false);
}

@Override
public int getItemCount() {
    return items.size();
}

@Override
public int getItemViewType(int position) {
    return position;
}

@Override
public long getItemId(int position) {
    return position;
}

static class ViewHolder extends RecyclerView.ViewHolder {
    TextView ayah;
    TextView verses_telugu;
    public static RecyclerView wordsrecyclerView;

    public ViewHolder(View itemView) {
        super(itemView);
        ayah = itemView.findViewById(R.id.ayah);
        verses_telugu = itemView.findViewById(R.id.telugu_line);
        wordsrecyclerView = itemView.findViewById(R.id.words_RV_id);

    }
 }

}

这是我的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

    <TextView
         android:id="@+id/ayah"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="start"
         android:layout_margin="5dp"
         android:textAlignment="viewStart"
         android:textColor="#27A82C"
         android:textSize="18sp"
         android:textStyle="bold" />

   <androidx.recyclerview.widget.RecyclerView
       android:id="@+id/words_RV_id"
       android:layout_width="match_parent"
       android:layout_height="wrap_content" />


   <TextView
        android:id="@+id/telugu_line"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="start"
        android:layout_margin="5dp"
        android:textAlignment="textStart"
        android:textSize="16sp"
        android:textStyle="bold" />

</LinearLayout>

这是最终结果显示的实际样子:

Screenshot1

这是我的应用程序的样子:

Screenshot2(Part1)

Screenshot2(Part1)

现在,如果您从屏幕截图中注意到,我尝试显示的数据是相同的。但是在我的应用中,并非所有的单词都显示出来,就像您注意到的那样。

我注意到的另一件事是,如果屏幕方向是垂直的,则我可以看到的最大线条为10,如果屏幕方向是垂直的,则我可以看到最多为6的线条。这些行数对于数据很大的所有位置都是固定的。如果数据较小,它将以所需的确切行数显示,并且如前所述,我一点都没有问题。

希望有人能尽快帮助我。提前致谢。 (:

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...