2026/1/14 21:44:33
网站建设
项目流程
如何用手机做音乐网站,厦门网站建设首选厦门一联网络,网站开发区书籍,wordpress 获取指定文章标题2.2.2 RelativeLayout(相对布局)
本节引言 在上一节中我们对LinearLayout进行了详细的解析#xff0c;LinearLayout也是我们 用的比较多的一个布局,我们更多的时候更钟情于他的weight(权重)属性#xff0c;等比例划分#xff0c;对屏幕适配还是 帮助蛮大的;但是使用LinearL…2.2.2 RelativeLayout(相对布局)本节引言在上一节中我们对LinearLayout进行了详细的解析LinearLayout也是我们 用的比较多的一个布局,我们更多的时候更钟情于他的weight(权重)属性等比例划分对屏幕适配还是 帮助蛮大的;但是使用LinearLayout的时候也有一个问题就是当界面比较复杂的时候需要嵌套多层的 LinearLayout,这样就会降低UI Render的效率(渲染速度),而且如果是listview或者GridView上的 item,效率会更低,另外太多层LinearLayout嵌套会占用更多的系统资源,还有可能引发stackoverflow; 但是如果我们使用RelativeLayout的话,可能仅仅需要一层就可以完成了,以父容器或者兄弟组件参考margin padding就可以设置组件的显示位置,是比较方便的!当然,也不是绝对的,具体问题具体分析吧! 总结就是:尽量使用RelativeLayout LinearLayout的weight属性搭配使用吧1.核心属性图2.父容器定位属性示意图3.根据兄弟组件定位恩,先说下什么是兄弟组件吧,所谓的兄弟组件就是处于同一层次容器的组件,如图图中的组件1,2就是兄弟组件了,而组件3与组件1或组件2并不是兄弟组件,所以组件3不能通过 组件1或2来进行定位,比如layout_toleftof 组件1这样是会报错的切记 关于这个兄弟组件定位的最经典例子就是梅花布局了,下面代码实现下:运行效果图实现代码RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:toolshttp://schemas.android.com/tools android:idid/RelativeLayout1 android:layout_widthmatch_parent android:layout_heightmatch_parent !-- 这个是在容器中央的 -- ImageView android:idid/img1 android:layout_width80dp android:layout_height80dp android:layout_centerInParenttrue android:srcdrawable/pic1/ !-- 在中间图片的左边 -- ImageView android:idid/img2 android:layout_width80dp android:layout_height80dp android:layout_toLeftOfid/img1 android:layout_centerVerticaltrue android:srcdrawable/pic2/ !-- 在中间图片的右边 -- ImageView android:idid/img3 android:layout_width80dp android:layout_height80dp android:layout_toRightOfid/img1 android:layout_centerVerticaltrue android:srcdrawable/pic3/ !-- 在中间图片的上面-- ImageView android:idid/img4 android:layout_width80dp android:layout_height80dp android:layout_aboveid/img1 android:layout_centerHorizontaltrue android:srcdrawable/pic4/ !-- 在中间图片的下面 -- ImageView android:idid/img5 android:layout_width80dp android:layout_height80dp android:layout_belowid/img1 android:layout_centerHorizontaltrue android:srcdrawable/pic5/ /RelativeLayout4.margin与padding的区别初学者对于这两个属性可能会有一点混淆这里区分下 首先margin代表的是偏移,比如marginleft 5dp表示组件离容器左边缘偏移5dp; 而padding代表的则是填充,而填充的对象针对的是组件中的元素,比如TextView中的文字 比如为TextView设置paddingleft 5dp,则是在组件里的元素的左边填充5dp的空间 margin针对的是容器中的组件而padding针对的是组件中的元素要区分开来 下面通过简单的代码演示两者的区别:比较示例代码如下RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:toolshttp://schemas.android.com/tools android:layout_widthmatch_parent android:layout_heightmatch_parent android:paddingBottomdimen/activity_vertical_margin android:paddingLeftdimen/activity_horizontal_margin android:paddingRightdimen/activity_horizontal_margin android:paddingTopdimen/activity_vertical_margin tools:context.MainActivity Button android:idid/btn1 android:layout_heightwrap_content android:layout_widthwrap_content android:textButton/ Button android:paddingLeft100dp android:layout_heightwrap_content android:layout_widthwrap_content android:textButton android:layout_toRightOfid/btn1/ Button android:idid/btn2 android:layout_heightwrap_content android:layout_widthwrap_content android:textButton android:layout_alignParentBottomtrue/ Button android:layout_marginLeft100dp android:layout_heightwrap_content android:layout_widthwrap_content android:textButton android:layout_toRightOfid/btn2 android:layout_alignParentBottomtrue/ /RelativeLayout运行效果图比较5.很常用的一点:margin可以设置为负数相信很多朋友都不知道一点吧平时我们设置margin的时候都习惯了是正数的, 其实是可以用负数的,下面写个简单的程序演示下吧,模拟进入软件后,弹出广告 页面的,右上角的cancle按钮的margin则是使用负数的效果图如下:贴出的广告Activity的布局代码吧,当然,如果你对这个有兴趣的话可以下下demo, 因为仅仅是实现效果,所以代码会有些粗糙RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:toolshttp://schemas.android.com/tools android:layout_widthmatch_parent android:layout_heightmatch_parent tools:contextcom.jay.example.relativelayoutdemo.MainActivity android:background#00CCCCFF ImageView android:idid/imgBack android:layout_width200dp android:layout_height200dp android:layout_centerInParenttrue android:backgrounddrawable/myicon / ImageView android:idid/imgCancle android:layout_width28dp android:layout_height28dp android:layout_alignRightid/imgBack android:layout_alignTopid/imgBack android:backgrounddrawable/cancel android:layout_marginTop-15dp android:layout_marginRight-10dp / /RelativeLayout本节小结关于RelativeLayout的详解就到这里有什么纰漏错误好的建议欢迎提出~ 最后提供下上面的demo代码供大家下载RelativeLayoutDemo