问题标签 [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.
android - FlexBoxLayoutManager 方向
我正在做这个项目,我需要在列中显示一些项目,为此,我正在使用来自 Google FlexBoxLayout 的库。
到目前为止,我已经使它看起来像这样:
但我希望它看起来像这样:
由于我使用 RecyclerView 来显示这些项目,因此 FlexBoxLayoutManager 不允许我将其更改layoutDirection
为 RTL。我试图改变回收器的 layoutDirectionrecycler.layoutDirection = View.LAYOUT_DIRECTION_RTL
但它看起来像把视图推到左边,离开屏幕,就像这样:
android - Android FlexBox 布局仅显示固定数量的行
我正在尝试构建一个单词到单词的 RTL 语言电子书应用程序。电子书的数据存储在 Sqlite 数据库中。经过大量搜索,我发现 Flexbox 布局适合我的需要,以便以我所需的格式显示我的数据。以下链接帮助了我:Android GridLayout with dynamic number of columns per row但问题是,如果视图中传递的数据很大,则显示部分数据。如果传递的数据很小,那么我根本没有问题。
这是适配器代码:
这是我的布局文件:
这是最终结果显示的实际样子:
这是我的应用程序的样子:
现在,如果您从屏幕截图中注意到,我尝试显示的数据是相同的。但在我的应用程序中,并非所有单词都如您所见那样显示。
我注意到的另一件事是对于更大的数据,如果屏幕方向是垂直的,我可以看到的最大行数是 10,如果它是水平的,我最多可以看到 6 行。对于所有数据较大的地方,这些行数是固定的。如果数据较小,它会以所需的确切行数显示,如前所述,我完全没有问题。
希望有人能尽快帮助我。提前致谢。(:
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,然后选择一个图像,就会发生这种情况:
知道如何解决这个问题吗?
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中。这是充气机开始的地方
和膨胀的扩展功能是
android - 数据更改调用后 Recycler 视图中 FlexboxLayout 更改的行数
我有一个带有 flex 布局的回收器视图,当调用通知数据更改时,flex 布局将行数从 4 更改为 3,并且文本中断。下面是设置 Flex 布局的代码。
在适配器中,当用户点击任何项目时,我正在使用背景颜色和字体将项目行更新为粗体。有没有办法更新或召回 flexBox 布局,因为我认为字体的大小会发生变化,从而在选择项目时使布局出错?
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,在添加新项目时
java - 带有 Viewholder 的 Android Recyclerview 更改宽度和高度 onClick
我想在包含 ViewHolders 的 Android 中创建一个 RecyclerView,它会改变它们的宽度和高度,如下面的 GIF 所示。我为 RecyclerView 尝试了几个 LayoutManager,但我没有设法得到我想要的结果。
RecyclerView 应该是一维行。
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
android - Android RecyclerView GridLayoutManager 中心项目并保持相同的宽度
我将其RecyclerView
配置为布局管理器:
我的具体情况是子项没有预定义的宽度。相反,我将它们的宽度设置为
然后我希望GridLayoutManager
给每个项目1/3 的可用空间。
到目前为止一切顺利,但我希望如果在最后一行只有 1 或 2 个项目要显示,我想将它们居中。
我尝试了这个解决方案,但我得到的是:
正如您在最后一行中看到的那样,项目被拉伸到布局的边缘,并且 parent 的宽度在它们之间划分。发生这种情况是因为正如我所说,它们的宽度不是预先定义的。
我期望的是计算项目宽度,因为它们每行显示 3 个项目,然后将它们居中。如下图所示:
有什么办法我可以用GridLayoutManager
甚至用它来做这个FlexboxLayoutManager
吗?