我有一个水平的LinearLayout,它以编程方式填充了它的子节点。我希望能够切换到从右到左的布局(即,子0位于最右侧,子1位于其左侧,等等)。问题是,我希望布局从RtL切换到LtR并动态返回,这就是为什么,例如this question与我的情况无关。
似乎没有任何方法可以直接在代码中设置它,特别是因为重力用于对齐,而不是排序。
到目前为止,我看到了以下解决方法:
更直接的解决方案或更好的解决方法?
编辑:澄清一下,我在活动运行期间几乎创建了一次子项,我可以将它们存储在辅助数组/集合中,而不会对代码造成任何复杂。
答案 0 :(得分:3)
虽然重新创建子项可能是资源密集型的,但重新排序不应该那么糟糕。您可以使用getChildAt
和getChildCount
获取现有观看次数,然后使用addView
override with an index将其重新放入。
答案 1 :(得分:2)
执行LinearLayout.setRotationY(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);
}
代码可能有误,但你明白了。