linearlayout-Android xml布局 weight 问题

问题描述

Android xml布局 weight 问题

在下面的代码中,Android studio提示
Layout weights require a widget to be measured twice. When a LinearLayout
with non-zero weights is nested inside another LinearLayout with non-zero
weights ,then the number of measurements increases exponently.
这要怎么改?

//这段是从一段里截取的

   <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <Button
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:text="@string/again"
            android:id="@+id/again"
            android:layout_weight="1"/>

        <Button
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:text="@string/confirm"
            android:id="@+id/confirm"
            android:layout_weight="1" />
    </LinearLayout>

解决方案

你就一个LinearLayout,你怎么用weight属性呢,两个button有一个父LinearLayout,此LinearLayout有宽度故可以用weight。如果你的LinearLayout也有父节点,就可以用weight。
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<!--设置高度,去掉weight-->

    <Button
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:text="@string/again"
        android:id="@+id/again"
        android:layout_weight="1"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:text="@string/confirm"
        android:id="@+id/confirm"
        android:layout_weight="1" />
</LinearLayout>   <LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1">

    <Button
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:text="@string/again"
        android:id="@+id/again"
        android:layout_weight="1"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:text="@string/confirm"
        android:id="@+id/confirm"
        android:layout_weight="1" />
</LinearLayout>

解决方案二:

不好意思代码多复制了一段,看上边的

解决方案三:

顶层layout可以不用,里面的button要平分就是用weight一样的值

解决方案四:

这是Android-Lint功能,报错是因为最外层layout_weight无意义,影响性能。所以提示错误
eclipse可以http://blog.csdn.net/lidhsr/article/details/38435733关闭,
可以看看studio http://blog.sina.com.cn/s/blog_4e1e357d0102wbjc.html里面是不是也有设置

解决方案五:

你这一段设置的android:orientation="horizontal"是水平布局,但是你设置android:layout_width="fill_parent"
android:layout_height="0dp"这样就和水平布局冲突了,应该设置为android:layout_width="0dp"
android:layout_height="fill_parent"

解决方案六:

父子都用了weight 测量时会需要很久

解决方案七:

这个其实不算错误,只是提醒你这样嵌套 layout weight 属性,会使控件多次测量宽高,不提倡而已。

解决方案八:

顶层layout最好不用,
里面的两个button设置weight一样的值,就均分父控件的大小了。

时间: 2024-09-24 03:17:56

linearlayout-Android xml布局 weight 问题的相关文章

android技巧:android xml布局总结

一.背景 可能很多人跟我一样,做了好久的android程序,却一直没有认真地坐下来好好学习下xml文件的布局.其实有的时候我们用view绘制或是利用ADT的图形界面功能就可以轻松搞定布局,但是最好还是静下来学习下xml的布局文件具体写法.这一节我们要绘制如下图所示的界面. 二基础知识 首先我们要了解android到底有那些布局,和每个布局类型的区别. 1.线性布局 LinearLayout 线性布局分两种.一种是水平布局,一种是垂直布局.下面我们根据上图举例子. 先把上图的代码贴出来吧! <?x

【android-tips】android xml布局总结篇

(转载请注明出处:http://blog.csdn.net/buptgshengod) 一.背景         可能很多人跟我一样,做了好久的android程序,却一直没有认真地坐下来好好学习下xml文件的布局.其实有的时候我们用view绘制或是利用ADT的图形界面功能就可以轻松搞定布局,但是最好还是静下来学习下xml的布局文件具体写法.这一节我们要绘制如下图所示的界面. 二基础知识        首先我们要了解android到底有那些布局,和每个布局类型的区别.  1.线性布局 Linear

Android常见布局之线性布局

Android中比较常见的布局有线性布局(LinearLayout),表格布局(TableLayout),相对布局(RelativeLayout)及帧布局(FrameLayout). 线性布局是将其中的组件按照线性的,以垂直或者水平方向来布局,组件的布局方向可由orientation属性来控制,其具体值有水平(horizontal)及垂直(vertical).搞清楚布局以后,这玩意就的思考加练习,以各种方式在纸上进行画,或者在心里画,然后编写布局文件来练习,时间长了就自然而然的熟练了. 练习要求

Android常见布局控件之LinearLayout和TableLayout

一.LinearLayout布局控件 xml属性 android:baselineAligned:是否允许用户调整它内容的基线. android:baselineAlignedChildIndex:当一个线性布局与另一个布局是按基 线对齐的一部分,它可以指定其内容的基线对齐方式. android:gravity:指定控件中内容的基本内容. android:orientation:设置它内容的对其方向,有两个可以选择的值: horizontal和vertical.分别表示水平排列和垂直排列. Li

Android 线性布局(LinearLayout)相关官方文档 - 指南部分

Android 线性布局(LinearLayout)相关官方文档 - 指南部分 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. Android 官方文档线性布局相关资源链接汇总如下: andro

Android 线性布局(LinearLayout)相关官方文档 - 参考部分

Android 线性布局(LinearLayout)相关官方文档 - 参考部分 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. Android 官方文档线性布局相关资源链接汇总如下: andro

Android 线性布局(LinearLayout)性能相关

Android 线性布局(LinearLayout)性能相关 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 如下嵌套线性布局中有两处性能问题,在不使用 Eclipse Adt 提示的情况下,你

简析Android五大布局(LinearLayout、FrameLayout、RelativeLayout等)_Android

Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Android的五大布局分别是LinearLayout(线性布局).FrameLayout(单帧布局).RelativeLayout(相对布局).AbsoluteLayout(绝对布局)和TableLayout(表格布局). 布局一:LinearLayout LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元

Android五大布局教程LinearLayout、FrameLayout、AbsoulteLayout、RelativeLayout和TableLayout

Android的界面是有布局和组件协同完成,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面. LinearLayout: LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后.如果是垂直排列,那么将是一个N行单列的结构,每一行只会有一个元素,而不论这个元素的宽度为多少:如果是水平排列,那么将是一个单行N列的结构.如果搭建两行两列的结构,通常的方式是先垂直排列两个元素,每一个元素里再包含一个Line