我想实现以下目标:
它适用于以下布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_weight="3"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:orientation="vertical" >
<fragment
android:name="com.bobjohn.DetailsMenuFragment"
android:id="@+id/detailsMenuFragment"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="6"
/>
<fragment
android:name="com.bobjohn.SummaryFragment"
android:id="@+id/summaryFragment"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_margin="10dp"
android:layout_weight="4"/>
</LinearLayout>
<TextView
android:layout_width="0dp"
android:layout_weight="7"
android:layout_height="fill_parent"
android:text="Test Text"/>
</LinearLayout>
但是,我收到有关嵌套权重对性能不利的警告。我理解错误,但我不知道如何以另一种方式表达这种布局。有什么替代方案?
答案 0 :(得分:7)
更新的答案: -
每当你创建任何视图时,它会调用它的度量事件来知道屏幕上视图的高度宽度,如果你没有使用WRAP_CONTENT或FILL_PARENT或FIXEDSIZE并使用权重,那么在屏幕上渲染你的布局变得越来越复杂
平均值
首先渲染你的主要布局并调用它的度量。然后根据权重,所有子视图都会递归调用它的度量事件,因此它会消耗更多的时间来加载。
所以,应该避免重量嵌套。
嵌套权重的替代方案: -
您应该考虑使用特定于不同尺寸的不同布局和可绘制文件夹。使用特定的高度宽度在XML中编写视图或使其成为wrap_content并使用特定的背景图像或使其成为fill_parent。
我认为,作为开发人员,我们可能会错误几次,但作为创建者Android(Lint),他们可能只是在极少数情况下出错,应该听取这些警告以使您的代码更好。
以下答案缺乏对安卓布局的了解
AFAIK,我认为你做得对,这是同样最好的书面XML。 您已经完全使用了权重属性,因为它应该被使用。你只需忽略警告。
有什么替代方案?
我已经在我的项目中以相同的方式编写了所有XML,所以这对我来说是最好的选择,所以我不认为除了使用{{之外,还有其他任何替代CODE的XML来获得这样的布局。 1}} 作为父布局,具有一些固定大小的子视图高度和宽度。我仍然建议你保持原样。
我会删除这个答案,因为我仍然不完全了解Android Layouts,但保留它以接收新的评论和答案
答案 1 :(得分:3)
是的,我们可以通过android LinearLayout
weight
percent support library
考虑这个简单的布局,我完全避免了LinearLayout
<android.support.percent.PercentRelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/fifty_huntv"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="#ff7acfff"
android:text="20% - 50%"
android:textColor="@android:color/white"
app:layout_heightPercent="20%"
app:layout_widthPercent="50%" />
<TextView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_toRightOf="@id/fifty_huntv"
android:background="#ffff5566"
android:text="80%-50%"
app:layout_heightPercent="80%"
app:layout_widthPercent="50%"
/>
</android.support.percent.PercentRelativeLayout>
太棒了!!!
答案 2 :(得分:0)
我认为(我可能会因此受到抨击),但我认为我的手机还有一个四核处理器可以与大多数人家用PC竞争(如果不是完全毁掉的话)。
我也认为这种硬件功能是手机的未来。
所以我得出一个结论,只要你不会被嵌套(在MHO中布局应该永远不会超过4级,如果它是你可能做错了),你的手机可能不太关心体重。
你可以做很多事情会对性能产生更深远的影响,然后担心你的处理器会做一些额外的数学运算。
(请注意,我有点幽默,所以不要在这篇文章中采取任何过于认真的事情,除此之外,还有其他事情你应该首先优化,并担心2-3级深重没有帮助你的健康)