片段示例中的布局宽度始终为零。这个价值的背后是什么?
答案 0 :(得分:33)
为了解释,请查看开发指南中的Design Philosophy片段。
如果您查看图像,则会在左侧显示手机如何显示初始活动A,然后在选择列表中的项目时启动活动B.
然而,在右边,它显示了这两个活动如何同时显示为碎片。注意片段A占据屏幕的1/3,片段B占据屏幕的2/3。
现在从同一个Dev Guide文章中的Adding a fragment to an activity查看该布局的XML ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.example.news.ArticleListFragment"
android:id="@+id/list"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment android:name="com.example.news.ArticleReaderFragment"
android:id="@+id/viewer"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>
您可以看到两个片段的{0}都是layout_width
,但它们每个都有一个layout_weight
属性。第一个的权重为1,第二个的权重为2。
简而言之,当使用这样的布局时,将'width'设置为0意味着您不希望显式强制执行宽度,并且OS应该将相对宽度计算为总权重的分数。换句话说,1 + 2 = 3(总重量)但第一个活动要宽度为1 /总重量=屏幕宽度的1/3,而碎片B想要2 /总宽度=屏幕宽度的2/3。 / p>
现在假设你添加了第三个片段,它也有width = 0dp和weight = 2。在这种情况下,总重量为1 + 2 + 2 = 5,第一个片段的相对宽度为1/5,屏幕的另外两个片段为2/5或20%/ 40%/ 40%。 / p>
答案 1 :(得分:0)
这对我有用:
对布局中的所有权重求和。在Squonk发布的示例中,有2个片段,总重量为3。
片段ArticleListFragment的权重= 1,意思是 尺寸将是屏幕的1/3(3是总重量)。
片段ArticleReaderFragment的权重= 2,意味着大小将是screem的2/3。
希望它有所帮助。