Android ListView 项目布局变化

Android ListView Item layout variations

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

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

  1. 我是否创建两个不同的 Item XML 布局文件,一个用于左手,一个用于右手?这似乎是在不同的 XML 布局文件中重复相同的 TextViews 的重复工作;只是改变顺序。
  2. 我是否以编程方式更改代码中 TextView 的顺序?怎么样?
  3. 还有其他我不知道的方法吗?

只是想学习并以正确的方式去做。

您可以尝试在一个 xml 布局中使用 2 组 TextView。改变他们的可见性将对左撇子或右撇子的人产生影响。但是,无论如何,这是重复的观点。

或者您可以使用 ConstraintLayout 并根据选择的首选项以编程方式更改视图的 ConstraintSet。

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

Sandi 提到的重复 post 非常容易地完成了我想要的,并且没有任何重复 XML 文件或代码来重新排列顺序。感谢所有回复并让我来到这里的人。我只是想确保我 post 编辑了对我来说很容易工作的东西。

我有一个包含两个不同 ListView 的 TAB,每个 ListView 都有自己的 ListItem XML 布局,这在主布局和每个 TabFragment.java 的 onCreateView 中完美地颠倒了顺序ListItem 布局!

    // 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);
    }

您可以保留一个Layout文件,并从代码中更改它们(根据条件):

左 -> child.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);

右 -> child.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_END);