待续,主要讲LinearLayout和RelativeLayout
ViewStub实现单/双layout切换
在xml中调用另一个layout的xml文件,android:actionLayout="@layout/xmlname"
在LinearLayout中,可以通过设置visibility=“Gone”不可见,但在RelativeLayout中可能会带来问题(设置了其他的view将找不到自己的位置)
此时可以通过设置android:layout_alignWithParentIfMising="true"解决与其他view的相对问题。
显示在右下角
android:layout_gravity="bottom" android:gravity="right"
等间距ImageButton排布(可以通过padding调整中间间隔)
<LinearLayout> <LinearLayout android:weight="1"> <ImageButton> </LinearLayout> <LinearLayout android:weight="1"> <ImageButton> </LinearLayout> <LinearLayout android:weight="1"> <ImageButton> </LinearLayout> </LinearLayout>
ViewStub (初态不可见,没有size)
A ViewStub is an invisible, zero-sized View that can be used to lazily inflate layout resources at runtime.
在CC主界面的detail里,需要通过单击来选择是否显示上部的图片,我把他们写在两个部分,
上面一个layout通过viewStub预留空间(写到下面那个一直显示的layout中,
需要设置android:inflatedId="@+id/stubInflate"属性,并且说明android:layout="@layout/your_extend_xml"
<ViewStub android:id="@+id/stub"
android:inflatedId="@+id/subTree"
android:layout="@layout/mySubTree"
android:layout_width="120dip"
android:layout_height="40dip" />
当setVisibility(int)或者inflate()被调用以后,这个inflated view才会被添加到viewStub在它parent中预留的位置。
Perform the inflation:
ViewStub stub = (ViewStub) findViewById(R.id.stub); View inflated = stub.inflate();
当调用inflate()后,ViewStub会被the inflated view替换并且返回the inflated view。
这有个好处,可以使程序不许要通过额外的findViewById()得到inflated view的引用
图片+两行文字的显示:
参考:Resources/articles/layout-tricks-efficiency
仅在RelativeLayout中有效:
在父亲布局的相对位置
android:layout_alignParentLeft="true" //在布局左边
android:layout_alignParentRight="true" //在布局右边
android:layout_alignParentTop="true" //在布局上面
android:layout_alignParentBottom="true " //在布局的下面
在某个控件的相对位置
android:layout_toRightOf="@id/button1" //在控件button1的右边,不仅仅是紧靠着
android:layout_toLeftOf="@id/button1" //在控件button2的左边,不仅仅是紧靠着
android:layout_below="@id/button1 " //在控件button1下面,不仅仅是正下方
android:layout_above=“@id/button1” //在控件button1上面,不仅仅是正上方
定义和某控件对奇
android:layout_alignTop=”@id/button1” //和控件button1上对齐
android:layout_alignBottom=”@id/button1” //和控件button1下对齐
android:layout_alignLeft=”@id/button1” //和控件button1左对齐
android:layout_alignRight=”@id/button1” //和控件button2右对齐
android:layout_centerHorizontal="true" //水平居中
android:layout_centerVertical="true"
android:layout_centerInParent="true"
仅在LinearLayout中有效
设置控件在一排或一列中所占比例值
android:layout_weight="1"