问题标签 [android-flexboxlayout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
116 浏览

android - FlexBoxLayoutManager 方向

我正在做这个项目,我需要在列中显示一些项目,为此,我正在使用来自 Google FlexBoxLayout 的库。

到目前为止,我已经使它看起来像这样:

但我希望它看起来像这样:

由于我使用 RecyclerView 来显示这些项目,因此 FlexBoxLayoutManager 不允许我将其更改layoutDirection为 RTL。我试图改变回收器的 layoutDirectionrecycler.layoutDirection = View.LAYOUT_DIRECTION_RTL但它看起来像把视图推到左边,离开屏幕,就像这样:

0 投票
1 回答
69 浏览

android - Android FlexboxLayout 无法处理长文本并弄乱 UI

我有以下 XML -

问题是它适用于少量文本 -

在此处输入图像描述

这是预期的方式

但是当任务名称很长时,会发生以下情况 -

在此处输入图像描述

出现长文本时似乎无缘无故换行

如何解决此问题以使文本继续在同一行上?

0 投票
0 回答
980 浏览

android - Android FlexBox 布局仅显示固定数量的行

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

这是适配器代码:

这是我的布局文件:

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

截图1

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

截图2(Part1)

截图2(Part1)

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

我注意到的另一件事是对于更大的数据,如果屏幕方向是垂直的,我可以看到的最大行数是 10,如果它是水平的,我最多可以看到 6 行。对于所有数据较大的地方,这些行数是固定的。如果数据较小,它会以所需的确切行数显示,如前所述,我完全没有问题。

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

0 投票
6 回答
2855 浏览

android - 具有动态项目高度的水平 RecyclerView

我正在尝试RecyclerView使用水平滚动来实现 a,所以我使用的是LinearLayoutManager水平方向的 a。问题是我使用 2 种不同类型的项目填充 RecyclerView,具有不同的高度。这是我用于该项目的布局:

这是包含 的布局,RecyclerView基本上是这样的:

在此处输入图像描述

我使用的是一个ViewHolder,我只是改变了 2 个子视图的可见性。

我期望得到的结果是这样的:

在此处输入图像描述

但我得到的是这个;使用第二种项目的高度将 CardView 切成两半:

在此处输入图像描述

我看到了这篇文章,这与我的问题相似。它建议使用Google’s Flexbox. 所以,我试图实现FlexboxLayoutManager

我正在使用row方向,如果它不适合单行,它会在下一行显示项目。所以,我也加了No_wrap。现在它在一行中显示项目,但不提供滚动。同样在这种情况下,它会尝试通过减小项目的宽度来将所有项目放在一行中。

我也玩过 flex box 示例应用程序,但我无法得到我想要的结果。

有没有办法通过与 RecyclerView 集成的 Flexbox 实现水平滚动?还是我应该使用不同的方法?

谢谢

编辑

感谢您的提示和一切,但它并没有解决它。因此,我将代码精简到最低限度以重现这一点。

主要活动:

主要活动布局:

文件:

文件适配器:

文件项目:

图片项目:

如果我先选择一个图像和几个 pdf,它可以正常工作:

在此处输入图像描述

但是,如果我先选择 3 个 pdf,然后选择一个图像,就会发生这种情况:

在此处输入图像描述

知道如何解决这个问题吗?

0 投票
1 回答
109 浏览

android - Flexbox里面不支持cardview?

我想在 flexbox 布局中创建许多卡片视图。但我总是返回 NullPointerException。什么错误控制台说

android.view.InflateException:二进制 XML 文件第 17 行:尝试在空对象引用上调用虚拟方法 'boolean java.lang.String.equals(java.lang.Object)' 原因:java.lang.NullPointerException:尝试在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764) 在 android.view.LayoutInflater.createViewFromTag( LayoutInflater.java:730) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:863) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:866 ) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 在 android.view.LayoutInflater 的 android.view.LayoutInflater.inflate(LayoutInflater.java:515)。inflate(LayoutInflater.java:423) at com.tribunnews.app.utils.CommonViewKt.inflate(CommonView.kt:193) at com.tribunnews.app.itemview.DetailTagsViewHolder.onBind(DetailTagsViewHolder.kt:34) at com.tribunnews .app.adapter.DetailAdapter.onBindViewHolder(DetailAdapter.kt:118) at com.tribunnews.app.adapter.DetailAdapter.onBindViewHolder(DetailAdapter.kt:17) at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java :7263) 在 androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6204) 在 androidx.recyclerview.widget.RecyclerView$ 的 androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7343) Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6470) 在 androidx.recyclerview.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:288) 在 androidx.recyclerview.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:345) 在 androidx.recyclerview.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:361) 在 androidx.recyclerview.widget.GapWorker.prefetch(GapWorker.java :368) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Handler.handleCallback(Handler.java:873) 在 androidx.recyclerview.widget.GapWorker.run(GapWorker.java:399)在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6669) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal .os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)flushTasksWithDeadline(GapWorker.java:361) 在 androidx.recyclerview.widget.GapWorker.prefetch(GapWorker.java:368) 在 androidx.recyclerview.widget.GapWorker.run(GapWorker.java:399) 在 android.os.Handler.handleCallback (Handler.java:873) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java: 6669) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main( ZygoteInit.java:858)flushTasksWithDeadline(GapWorker.java:361) 在 androidx.recyclerview.widget.GapWorker.prefetch(GapWorker.java:368) 在 androidx.recyclerview.widget.GapWorker.run(GapWorker.java:399) 在 android.os.Handler.handleCallback (Handler.java:873) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java: 6669) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main( ZygoteInit.java:858)99) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6669) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android .internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)99) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6669) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android .internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

我已经尝试在布局 xml 中手动创建仍然返回崩溃,就像这样

更新 实际上我想为cardview创建layoutInflater并将这些项目添加到flexboxlayout中。这是充气机开始的地方

和膨胀的扩展功能是

0 投票
0 回答
169 浏览

android - 数据更改调用后 Recycler 视图中 FlexboxLayout 更改的行数

我有一个带有 flex 布局的回收器视图,当调用通知数据更改时,flex 布局将行数从 4 更改为 3,并且文本中断。下面是设置 Flex 布局的代码。

在适配器中,当用户点击任何项目时,我正在使用背景颜色和字体将项目行更新为粗体。有没有办法更新或召回 flexBox 布局,因为我认为字体的大小会发生变化,从而在选择项目时使布局出错?

0 投票
1 回答
254 浏览

android-recyclerview - FlexboxLayoutManager 项目在滚动另一个 Recycler 视图时闪烁

我有2 recyclerView,RecyclerView 1,有 layoutManagerapp:layoutManager="com.google.android.flexbox.FlexboxLayoutManager"和另一个 RecyclerView 2,有app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager".

recyclerview在另一个 recyclerView 上滚动时,第一项闪烁。当 RecyclerView 1 的项目数小于 6 或 7 时,它工作正常。

请查看视频链接以获取问题参考(0:18s - 0:46s):https ://drive.google.com/file/d/17_wa3vd5H7QKh0fgj6Sh310ZNlt2TeG1/view?usp=sharing

请在下面找到代码片段:

activity_personal_activities.xml

设置适配器:

RecyclerView 1 的 ScrollToPosition,在添加新项目时

0 投票
1 回答
268 浏览

java - 带有 Viewholder 的 Android Recyclerview 更改宽度和高度 onClick

我想在包含 ViewHolders 的 Android 中创建一个 RecyclerView,它会改变它们的宽度和高度,如下面的 GIF 所示。我为 RecyclerView 尝试了几个 LayoutManager,但我没有设法得到我想要的结果。

RecyclerView 应该是一维行。

任务的可视化

0 投票
0 回答
61 浏览

android - 使用 FlexboxLayoutManger 作为 RecyclerView 的 layoutManager 时,所有获取行函数返回 0

我有一个 recyclerview 有一个 flexboxlayoutmanager 作为布局管理器。我可以设置 maxLines 等,但是当我想在 flexboxlayoutmanager 中处理 flexlines 的数量时,所有 flexlines 函数都返回 0。但是“.itemCount”返回 13 并且它是真的。我不明白管理器中的行数存储在哪里。

我放入回收站的所有数据都正确显示。它在 maxLine 约束中正常工作,但为什么我看不到有多少行/行?

simpleRecycler.layoutmanager = simpleFlexboxLayoutManager

setDataInAdapter()

logd.("TAG", "item count ${simpleFlexboxLayoutManager.itemCount}") -> 返回 13

logd.("TAG", "item count ${simpleFlexboxLayoutManager.flexLines.size}") ->return 0

logd.("TAG", "item count ${simpleFlexboxLayoutManager.flexLinesInternal.size}") -> 返回 0

0 投票
1 回答
157 浏览

android - Android RecyclerView GridLayoutManager 中心项目并保持相同的宽度

我将其RecyclerView配置为布局管理器:

我的具体情况是子项没有预定义的宽度。相反,我将它们的宽度设置为

然后我希望GridLayoutManager给每个项目1/3 的可用空间

到目前为止一切顺利,但我希望如果在最后一行只有 1 或 2 个项目要显示,我想将它们居中。

我尝试了这个解决方案,但我得到的是:

在此处输入图像描述

正如您在最后一行中看到的那样,项目被拉伸到布局的边缘,并且 parent 的宽度在它们之间划分。发生这种情况是因为正如我所说,它们的宽度不是预先定义的。

我期望的是计算项目宽度,因为它们每行显示 3 个项目,然后将它们居中。如下图所示:

在此处输入图像描述

有什么办法我可以用GridLayoutManager甚至用它来做这个FlexboxLayoutManager吗?