我的xml-layout是这样的
<LinearLayout width=fill height=wrap orient=horizontal>
<LinearLayout width=0 height=wrap weight=1>...</>
<LinearLayout width=0 height=wrap weight=1>...</>
<LinearLayout width=0 height=wrap weight=1>...</>
<LinearLayout width=wrap height=wrap weight=0>...</>
</LinearLayout>
这个膨胀的main.xml
正是我所需要的 - 四个小组在屏幕上均匀分布。
但是,当我使用[例如]第二个子布局可见性GONE
启动活动并在运行时使其成为VISIBLE
时,整个根/父布局看起来非常糟糕。子视图[来自子布局]相互混淆,看起来他们的位置没有重新计算,以考虑新的linearlayout
变得可见。
requestLayout()
和forceLayout()
没有帮助。
如何让根布局做与活动刚刚开始时相同的事情?
答案 0 :(得分:0)
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:weightSum="4">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">........</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">........</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">........</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">........</LinearLayout>
</LinearLayout>
答案 1 :(得分:0)
毕竟我觉得它有效。现在所有更新都正确,虽然我认为这不是真正的解决方案。我刚刚移动了代码,重新计算了onWindowFocusChanged
回调的布局可见性,并手动设置代码中的android:weightSum
。
相信onSizeChanged
回调也可以提供帮助。