一般来说,标准的SDK不能做到这一点。 但是,您可以创建一种从LinearLayout中检索所有子视图,将其从LinearLayout中删除,然后以相反的顺序添加的方法。
linearlayoutll=//inflatearraylistviews=new ArrayList (; for(intx=0; x ll.getChildCount (; x ) {views.add(ll.getchildat ) x ); } ll.removeAllViews (); for(intx=views.size ) )- 1; x=0; x--}{ll.addview(views.get(x ); }
这是最简单的方法: )
for(intk=ll.getchildcount )-1; k=0; k--; {viewitem=ll.getchildat(k; ll.removeviewat(k ); ll.addview(item ); }
用简单的方法试试这个
linearlayoutll=(linearlayout ) findviewbyid(r.id.ll1 ); viewv0=ll.getchildat(0; viewV1=ll.getchildat(1; viewV2=ll.getchildat(2; ll.removeAllViews (; LL.addview(V2; LL.addview(V1; LL.addview(v0;
可以直接在layoutDirection中控制布局的方向。 此代码检测自然方向是否为RTL,并反转方向。 很明显,可以应用自己的逻辑进行反转。
linearlayoutbuttOnscontainer=(linear layout ) findviewbyid (r.id.buttons container ); buttons container.setlayoutdirection (is RTL )? linear layout.layout _ direction _ ltr : linear layout.layout _ direction _ RTL (publicstaticboleanisrtl ) { retur rear publicstaticbooleanisrtl (locale locale ) finalintdirectiOnality=character.getdirectionality ) locale.get display name reture nality _ right _ to _ left|| direction ality==character.direction ality\}
或者,如果您想使用XML不断覆盖自然方向,请做好准备。
.
RTL检测来自于识别Android RTL语言的问题
view1 view2 view2
现在试试这个
linearlayoutparent=(linear layout ) findviewbyid ) r.id.parent; viewview1=(view ) parent.getChildAt(0) 0; //itwillgivefirstviewviewview3=(view ) parent.getChildAt(2) 2; //it will give you third view
在此,可以通过View来表示TextView、Button … .等。
如何反转线性布局的方向?
对不起,不支持。
我的目标是从XML布局中扩展左手和右手的实例。
欢迎从XML布局膨胀。 但是,必须删除其中一个子节点,并在Java代码中反转其顺序。 这可能比维护两个单独的布局文件更容易,但绝对不是自动的。
或者,我们欢迎您创建自己的LinearLayout子类来提供此函数。 或者,也可以创建LinearLayout的克隆。
Android 4.2及更高版本提供了对LinearLayout的RTL支持,但它与区域设置相关联,并应用于APP中所有级别的LinearLayout容器。
对于prev回复通知,如果要保留视图的宽度/高度并通过直接传递进行计算,也就是说要填充父/换行符,则必须显式设置。
for(intI=views.size ) )- 1; i=0; I----{viewv=views.get(I ); linearlayouthor.addview(v,v.getWidth ),v.getHeight ); }
要确认计算视图的大小,可能必须使用post。 向方向更改添加处理程序,以正确重新计算大小。
请尝试view compat.setlayoutdirection (view,direction )