Android ListView项目布局变体

Android ListView项目布局变体,android,android-layout,listviewitem,Android,Android Layout,Listviewitem,我有一个ListView,它将使用ListView项XML布局移动到RecyclerView,在一个LinearLayout中包含3个文本视图。我的用户偏好允许左手或右手使用。在这种情况下,我想更改项目布局文件中文本视图的顺序 这里的首选设计模式是什么?我该怎么做 我是否创建了两个不同的项目XML布局文件,一个用于左侧,另一个用于右侧?这似乎是重复工作,相同的文本视图在不同的XML布局文件中重复;只是改变一下顺序。 我是否以编程方式更改代码中文本视图的顺序?怎样 还有其他我不知道的方法吗? 只是

我有一个ListView,它将使用ListView项XML布局移动到RecyclerView,在一个LinearLayout中包含3个文本视图。我的用户偏好允许左手或右手使用。在这种情况下,我想更改项目布局文件中文本视图的顺序

这里的首选设计模式是什么?我该怎么做

我是否创建了两个不同的项目XML布局文件,一个用于左侧,另一个用于右侧?这似乎是重复工作,相同的文本视图在不同的XML布局文件中重复;只是改变一下顺序。 我是否以编程方式更改代码中文本视图的顺序?怎样 还有其他我不知道的方法吗?
只是希望学习并以正确的方式进行操作。

您可以尝试在一个xml布局中包含两组文本视图。改变他们的可见度将使左撇子或右撇子的人变戏法。但无论如何,这是观点的重复

或者,您可以使用ConstraintLayout并通过编程方式更改视图的ConstraintSet,具体取决于选择的首选项

val constrSet = ConstraintSet()
constrSet.clone(parentLayout)
constrSet.connect(textView1.id, ConstraintSet.END, textView2.id, ConstraintSet.START)
constrSet.applyTo(parentLayout)

Sandi提到的重复文章很容易就完成了我想要的,并且没有任何XML文件或代码的重复来重新排列顺序。感谢所有回应我的人,让我来到这里。我只是想确保我发布了对我来说很容易的东西

我有一个选项卡,其中有两个不同的ListView,每个都有自己的ListItem XML布局,这完全颠倒了onCreateView中主布局和每个ListItem布局中TabFragment.java的顺序

    // Inflate this Tab's checklist XML
    root = inflater.inflate(R.layout.tab_fragment, container, false);
    if (leftHanded) {
        LinearLayout linearLayout = root.findViewById(R.id.tabLinearLayout);
        linearLayout.setLayoutDirection(LinearLayout.LAYOUT_DIRECTION_RTL);
    }

您可以保留一个布局文件,并根据以下条件从代码中修改它们:

左->child.setTextAlignmentView.TEXT\u ALIGNMENT\u VIEW\u START


右->child.setTextAlignmentView.TEXT\u ALIGNMENT\u VIEW\u END

您可能更喜欢RTL布局。Android studio在菜单栏中提供了它。我的理解是,这就是文本视图中文本的显示方式。它不会改变线性布局中文本视图的顺序。我错了吗?不,RTL就是这么做的。它确实会改变左手使用的布局,并且不会改变视图的顺序。首选的方法是在ListView或RecyclerView中为每个项目变量使用不同的视图类型。RTL用于特定于语言环境的更改,OP表示用户可以设置是使用左手还是右手,而不管语言环境如何。我会为每个用例提供单独的XML,在一个标记中为3个文本视图提供一个共享的XML