Java 水平直线布局,儿童从右向左排列?
我有一个水平的线性布局,它以编程方式填充了它的子对象。我希望能够切换到从右向左的布局(即,子0位于最右侧,子1位于其左侧,等等)。问题是,我希望布局从RtL切换到LtR并动态返回,这就是为什么例如与我的案例无关 似乎没有任何方法可以直接在代码中设置它,特别是因为重力用于对齐,而不是排序 到目前为止,我看到了以下解决方法:Java 水平直线布局,儿童从右向左排列?,java,android,android-layout,Java,Android,Android Layout,我有一个水平的线性布局,它以编程方式填充了它的子对象。我希望能够切换到从右向左的布局(即,子0位于最右侧,子1位于其左侧,等等)。问题是,我希望布局从RtL切换到LtR并动态返回,这就是为什么例如与我的案例无关 似乎没有任何方法可以直接在代码中设置它,特别是因为重力用于对齐,而不是排序 到目前为止,我看到了以下解决方法: 在排序开关上,以相反的顺序重新添加子项(问题:非常难看且占用资源) 使用重写的onLayout()方法实现LinearLayout的子类(问题:由于助手布局成员的可见性受到限
- 在排序开关上,以相反的顺序重新添加子项(问题:非常难看且占用资源)
- 使用重写的onLayout()方法实现LinearLayout的子类(问题:由于助手布局成员的可见性受到限制,大量复制粘贴Android源代码)
- 将线性布局替换为另一个布局,例如TableLayout或RelativeLayout,并更改开关上子级的布局参数(问题:仍然有点笨拙)
编辑:为了澄清这一点,我在活动运行时几乎只创建了一次子项,并且我可以将它们存储在一个助手数组/集合中,而不会使代码复杂化。虽然重新创建子项可能需要大量资源,但重新排序应该不会那么糟糕。您可以使用和获取现有视图,然后使用。执行线性布局。设置旋转(180)。还必须将线性布局的子视图的Y旋转设置为180。例如:
private void horizontal() {
LinearLayout layout = (LinearLayout) v.findViewById(R.id.layout);
View childView1 = (View) v.findViewById(R.id.childView1);
View childView2 = (View) v.findViewById(R.id.childView2);
layout.setRotationY(180);
childView1.setRotationY(180);
childView2.setRotationY(180);
}
代码可能是错误的,但你明白了。你是一次将一个子元素添加到布局中,还是将其与循环一起添加?这是一个循环,我可以将引用存储在帮助器结构中而不会太复杂。我将编辑问题以澄清这一点。这正是第一个提到的解决方法。看看布局方法的来源,有很多事情要做,但也许我担心的太多了。尽管如此,我还是会等待其他答案,因为我问这个问题时预感到我遗漏了一些明显的东西。