Android ListView 项目布局变化
Android ListView Item layout variations
我有一个 ListView(将移动到 RecyclerView)和一个 ListView Item XML 布局,在 LinearLayout 中包含 3 个 TextView。我的用户偏好允许左手或右手使用。在这种情况下,我想更改项目布局文件中 TextView 的顺序。
这里首选的设计模式是什么?我该怎么做?
- 我是否创建两个不同的 Item XML 布局文件,一个用于左手,一个用于右手?这似乎是在不同的 XML 布局文件中重复相同的 TextViews 的重复工作;只是改变顺序。
- 我是否以编程方式更改代码中 TextView 的顺序?怎么样?
- 还有其他我不知道的方法吗?
只是想学习并以正确的方式去做。
您可以尝试在一个 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);
我有一个 ListView(将移动到 RecyclerView)和一个 ListView Item XML 布局,在 LinearLayout 中包含 3 个 TextView。我的用户偏好允许左手或右手使用。在这种情况下,我想更改项目布局文件中 TextView 的顺序。
这里首选的设计模式是什么?我该怎么做?
- 我是否创建两个不同的 Item XML 布局文件,一个用于左手,一个用于右手?这似乎是在不同的 XML 布局文件中重复相同的 TextViews 的重复工作;只是改变顺序。
- 我是否以编程方式更改代码中 TextView 的顺序?怎么样?
- 还有其他我不知道的方法吗?
只是想学习并以正确的方式去做。
您可以尝试在一个 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);