layout_width和width区别
首先我们应该知道一个控件的大小并不是由它自己本身来决定的,而是由父布局和它自身一起来决定的。而layout_width就是父布局允许view所占的宽度,而width是view的自身宽度。在layout_width和width都设置为具体数值的时候,width其实就无效了,这也不难理解,父布局已经给你分配了具体的空间,不论view怎么设置width,view的宽度也只能是layout_width.那么什么情况下,width也会起作用呢。当我们把layout_width设置成wrap_content的时候,父布局的意思是包裹view,view有多大就分配多大的空间给它,这时候view的宽度就取决于width,假如不设置width,那么系统就会根据view的内容来自行测量大小。layout_height和height是一样的。具体效果,可以写布局文件自己试一下,同时建议大家也试一下minWidth maxWidth这些属性,可以更好的帮助我们理解布局文件的原理。
概括的说,view中的layout_width形容的是本view和父容器的关系,比如button和包含它的LinearLayout;而view中的width是用来描述自己本身的。
如果你有swing编程的经验的话,就会知道,组件的大小是由包含它的布局管理器决定的,所以,如果view中有layout_width属性的话,不管有没有width属性,该view的形状是由父容器(即布局管理器LinearLayout)决定的,如下:
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:width="100dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="right"
android:text="Bsdfsdfsdfsdfsdfsdfsdfsdf" />
如上图,不管width设置的多小,button的宽度是LinearLayout控制的。
如果在android:layout_width设置为"wrap_content"时,意思是让在容器中的view宽度随着view中内容的变化而变化,此时,如果存在width的话,那么view的宽度就是由他们共同控制的,如下:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:width="50dp"
android:layout_height="wrap_content"
android:text="Bsdfsdfsdfsdfsdfsdfsdfsdf" />

浙公网安备 33010602011771号