layout布局_layout布局六大原则 - CSDN
精华内容
参与话题
  • Layout布局

    2012-12-09 23:00:42
    1、创建布局面板第一种方式(div中添加class="easyui-layout"),需要指定div层的高与宽: <div id="cc" class="easyui-layout" style="width:600px;height:400px;"...

    1、创建布局面板第一种方式(div中添加class="easyui-layout"),需要指定div层的高与宽:

    <div id="cc" class="easyui-layout" style="width:600px;height:400px;">  
        <div data-options="region:'north',title:'North Title',split:true" style="height:100px;"></div>  
        <div data-options="region:'south',title:'South Title',split:true" style="height:100px;"></div>  
        <div data-options="region:'east',iconCls:'icon-reload',title:'East',split:true" style="width:100px;"></div>  
        <div data-options="region:'west',title:'West',split:true" style="width:100px;"></div>  
        <div data-options="region:'center',title:'center title'" style="padding:5px;background:#eee;"></div>  
    </div>

    如图:

     

    2、第二种方式(body中添加class="easyui-layout"),整个页面将会铺满:

    <body class="easyui-layout">  
        <div data-options="region:'north',title:'North Title',split:true" style="height:100px;"></div>  
        <div data-options="region:'south',title:'South Title',split:true" style="height:100px;"></div>  
        <div data-options="region:'east',iconCls:'icon-reload',title:'East',split:true" style="width:100px;"></div>  
        <div data-options="region:'west',title:'West',split:true" style="width:100px;"></div>  
        <div data-options="region:'center',title:'center title'" style="padding:5px;background:#eee;"></div>  
    </body>  

    3、布局面板属性:

     

    1)、title:布局面板的标题
    2)、region:布局面板所在区域,可以取north、south、east、west、center
    3)、border:是否显示布局面板的边框,默认true显示
    4)、split:分隔条,设置为true,用户可以拖动分割条来改变面板的尺寸,默认是false
    5)、iconCls:显示布局面板头部图标,需要引入/themes/icon.css文件
    6)、href:载入超链接的数据

    例子:

    <div data-options="region:'center',title:'center title',href:'../js/easyUi/themes/default/easyui.css'" style="padding:5px;background:#eee;"></div>  

    如图:

    例子:

    <div data-options="region:'north',title:'North Title',split:true,border:false" style="height:100px;"></div>  

    如图:

     

    4、方法:

    1)、collapse:折叠指定的布局面板,可选参数为north、south、east、west
    <script type="text/javascript">
    		$(function(){
    			$('#cc').layout('collapse','east');  
    		});	
    </script>
    

    如图:

     

    如果不想要隐藏按钮,但又需要一个头部标题(fit属性可以让它自适应父容器尺寸):

    <div id="cc" class="easyui-layout" style="width:600px;height:400px;">  
    	    <div data-options="region:'north',title:'North Title',split:true" style="height:100px;"></div>  
    	    <div data-options="region:'south',title:'South Title',split:true" style="height:100px;"></div>  
    	    <div data-options="region:'east',iconCls:'icon-reload',title:'East',split:true" style="width:100px;"></div>  
    	    <div data-options="region:'west',title:'',split:true" style="width:100px;">
    	    	<div class="easyui-panel" data-options="title:'hahha',border:false,fit:true"></div>
    	    </div>  
    	    <div data-options="region:'center',title:'center title',href:''" style="padding:5px;background:#eee;"></div>  
    	</div>  

    如图:

     

    展开全文
  • Android Layout 布局属性全解

    万次阅读 2018-05-30 16:17:34
    Layout 布局属性全解 Android有基本Layout:FrameLayout,LinearLayout,TableLayout,RelativeLayout,AbsoluteLayout。android开发者谷歌文档http://android.xsoftlab.net/reference/android/view/ViewGrou...
    写的挺全,mark一下
    

    Android  Layout 布局属性全解


    Android有基本Layout:FrameLayout,LinearLayout,TableLayout,RelativeLayout,AbsoluteLayout。
    android开发者谷歌文档http://android.xsoftlab.net/reference/android/view/ViewGroup.html
    FrameLayout
    1. <FrameLayout   
    2. android:layout_width=“” //取值范围”match_parent”、”wrap_content”、”XXdp”  布局整体宽度  
    3. android:layout_height=“”//取值范围”match_parent”、”wrap_content”、”XXdp”  布局整体高度  
    4. android:layout_weight=“”//取值示例”1.0”  布局所占比重  
    5. android:layout_gravity=“” //取值范围”center”、”top”、”bottom”、”left”、”right”、”right|bottom” 布局位置  
    6. android:layout_margin=“” //取值示例”0dp” 距离父控件四个方向距离  
    7. android:layout_marginLeft=“” //取值示例”0dp” 距离父控件左间距  
    8. android:layout_marginTop=“” //取值示例”0dp” 距离父控件上间距  
    9. android:layout_marginRight=“” //取值示例”0dp” 距离父控件右间距  
    10. android:layout_marginBottom=“” //取值示例”0dp” 距离父控件下间距  
    11. android:layout_marginStart=“” //取值示例”-50dp” “50dp”  控件离父控件开始的位置的距离(前者不显示前50dp)  
    12. android:layout_marginEnd=“”   //取值示例”-50dp” “50dp”  控件离父控件结束的位置的距离(前者不显示后50dp)  
    13. android:addStatesFromChildren=“” //取值范围”true” 、”false” viewgroup的drawable属性是否把它的子类的drawable的state包含进来。测试中linearlayout如果不包含该属性(false),当子widget被点击时不会出现被选中的状态。也就是子类的state不会被传递给父类了  
    14. android:descendantFocusability=“” //见下  
    15. android:splitMotionEvents=“”  //取值范围”true” “false” 定义布局是否传递touch事件到子布局  
    16. android:layoutMode=“” //取值范围 “clipBounds” “opticalBounds”  见下  
    17. android:id=“”   
    18. android:tag=“” //listView中区别Item非常有用的Tag标签(key-value)  
    19. android:scrollX=“” //The initial horizontal scroll offset, in pixels. [dimension]最初的水平滚动的偏移,以像素为单位。  
    20. android:scrollY=“” //The initial virtual scroll offset, in pixels. [dimension]最初的竖直滚动的偏移,以像素为单位。  
    21. android:background=“”   
    22. android:padding=“” //取值示例”0dp” 控件内容(文本图片子控件等)距离控件四个方向边界的距离  
    23. android:paddingLeft=“”   
    24. android:paddingTop=“”   
    25. android:paddingRight=“”   
    26. android:paddingBottom=“”   
    27. android:paddingStart=“” //见下  文字对齐方式详解  
    28. android:paddingEnd=“” //见下  文字对齐方式详解  
    29. android:foreground=“” //设置布局的前景图,前景图不会被子元素覆盖  
    30. android:foregroundGravity=“” //设置布局前景图的位置  
    31. android:foregroundInsidePadding=“” //  
    32. android:focusable=“” //取值”true” “false”  能否获得焦点(按键)  
    33. android:focusableInTouchMode=“” //取值”true” “false”  是否可以通过touch获取到焦点(android:focusable 为先决条件)  
    34. android:fitsSystemWindows=“” //取值”true” “false”  设置布局调整时是否考虑系统窗口(如状态栏)  
    35. android:fadeScrollbars=“” //取值”true” “false” 滚动条自动隐藏  
    36. android:fadingEdge=“”  //设置拉滚动条时 ,边框渐变的方向。none(边框颜色不变),horizontal(水平方向颜色变淡),vertical(垂直方向颜色变淡)。  
    37. android:fadingEdgeLength=“” //滚动条渐变长度  
    38. android:filterTouchesWhenObscured=“” //取值范围  “true” “false”所在窗口被其它可见窗口遮住时,是否过滤触摸事件  
    39. android:visibility=“” //取值范围 “gone” “visible” “invisible”(虽不可见,但占据布局位置)  
    40. android:scrollbars=“”//取值范围 “none” “horizontal” “vertical” 设置滚动条  
    41. android:scrollbarStyle=“” //outsideInset :  该ScrollBar显示在视图(view)的边缘,增加了view的padding. 如果可能的话,该ScrollBar仅仅覆盖这个view的背景.                                  insideInset :该ScrollBar显示在padding区域里面,增加了控件的padding区域,该ScrollBar不会和视图的内容重叠.                                                    outsideOverlay :  该ScrollBar显示在视图(view)的边缘,不增加view的padding,该ScrollBar将被半透明覆盖                                                         insideOverlay : 该ScrollBar显示在内容区域里面,不会增加了控件的padding区域,该ScrollBar以半透明的样式覆盖在视图(view)的内容                      
    42. android:isScrollContainer=“”  //取值范围 “true”“false” 设置当前View是否为滚动容器(是否可以为输入法腾出空间而隐藏)  
    43. android:scrollbarFadeDuration=“” //褪色时间  
    44. android:scrollbarDefaultDelayBeforeFade=“” //设置滚动条N毫秒后开始淡化,以毫秒为单位。  
    45. android:scrollbarSize=“” //设置滚动条大小  
    46. android:scrollbarThumbHorizontal=“@drawable” //设置水平滚动条的drawable  
    47. android:scrollbarThumbVertical=“@drawable” //设置垂直滚动条的drawable.  
    48. android:scrollbarTrackHorizontal=“@drawable”//设置水平滚动条背景(轨迹)的色drawable  
    49. android:scrollbarTrackVertical=“@deawable” //设置垂直滚动条背景(轨迹)的drawable注意直接  
    50. android:scrollbarAlwaysDrawHorizontalTrack=“true/false” //设置水平滚动条是否含有轨道  
    51. android:scrollbarAlwaysDrawVerticalTrack=“true/false”  // 设置垂直滚动条是否含有轨道  
    52. android:requiresFadingEdge=“none/horizontal/vertical” //定义褪色时滚动边缘  
    53. android:nextFocusLeft=“@+id/” //Up键按下之后,哪一个控件获得焦点(被选中)  
    54. android:nextFocusRight=“@+id/”   
    55. android:nextFocusUp=“@+id/”   
    56. android:nextFocusDown=“@+id/”   
    57. android:nextFocusForward=“@+id/”   
    58. android:clickable=“true/false”   
    59. android:longClickable=“true/false”   
    60. android:saveEnabled=“true/false” //设置是否在窗口冻结时(如旋转屏幕)保存View的数据  
    61. android:drawingCacheQuality=“auto|low|hight” //设置绘图缓存质量   
    62. android:keepScreenOn=“true/false” //View在可见的情况下是否保持唤醒状态  
    63. android:duplicateParentState=“true/false”  如果设置此属性,将直接从父容器中获取绘图状态(光标,按下等)。 注意根据目前测试情况仅仅是获取绘图状态,而没有获取事件,也就是你点一下LinearLayout时Button有被点击的效果,但是不执行点击事件。  
    64. android:minHeight=“”   
    65. android:minWidth=“”   
    66. android:soundEffectsEnabled=“true/false” // 设置点击或触摸时是否有声音效果  
    67. android:hapticFeedbackEnabled=“true/false” // 实现单击某个视图,系统提供一个触力反馈(震动一下)  
    68. android:contentDescription=“@string/”        //图片不可见时的文字描述(盲人)   
    69. android:onClick=“”   
    70. android:overScrollMode=“ifContentScrolls/always/never” //滚动到边界时的效果   
    71. android:alpha=“0.1” //透明度  
    72. android:translationX=“” //X轴的偏移距离  
    73. android:translationY=“”   
    74. android:transformPivotX=“” //从某点的X轴偏移距离  
    75. android:transformPivotY=“”   
    76. android:rotation=“”  //旋转  
    77. android:rotationX=“”   
    78. android:rotationY=“”   
    79. android:scaleX=“” //设置X轴缩放比例  
    80. android:scaleY=“”   
    81. android:verticalScrollbarPosition=“defaultPosition/left/right”  //设置垂直滚动条的位置  
    82. android:layerType=“none/hardware/software” //绘图是否开启硬件加速  
    83. android:layoutDirection=“” //定义布局图纸的方向  
    84. android:textDirection=“”  //  
    85. android:textAlignment=“inherit/…..”   //文字对齐方式  
    86. android:importantForAccessibility=“noHideDescendants/….”    //设置可达性的重要行  
    87. android:accessibilityLiveRegion=“”   
    88. android:labelFor=“”   //添加标签  
    89. android:measureAllChildren=“”  //见下  
    90. android:animateLayoutChanges=“true”   //添加默认布局动画  
    91. android:clipChildren=“” //见下  
    92. android:clipToPadding=“” //见下转载  
    93. android:layoutAnimation=“” //设置layout动画  
    94. android:animationCache=“”  
    95. android:persistentDrawingCache=“” android:alwaysDrawnWithCache=“” />   
    <FrameLayout 
    android:layout_width="" //取值范围"match_parent"、"wrap_content"、"XXdp"  布局整体宽度
    android:layout_height=""//取值范围"match_parent"、"wrap_content"、"XXdp"  布局整体高度
    android:layout_weight=""//取值示例"1.0"  布局所占比重
    android:layout_gravity="" //取值范围"center"、"top"、"bottom"、"left"、"right"、"right|bottom" 布局位置
    android:layout_margin="" //取值示例"0dp" 距离父控件四个方向距离
    android:layout_marginLeft="" //取值示例"0dp" 距离父控件左间距
    android:layout_marginTop="" //取值示例"0dp" 距离父控件上间距
    android:layout_marginRight="" //取值示例"0dp" 距离父控件右间距
    android:layout_marginBottom="" //取值示例"0dp" 距离父控件下间距
    android:layout_marginStart="" //取值示例"-50dp" "50dp"  控件离父控件开始的位置的距离(前者不显示前50dp)
    android:layout_marginEnd=""   //取值示例"-50dp" "50dp"  控件离父控件结束的位置的距离(前者不显示后50dp)
    android:addStatesFromChildren="" //取值范围"true" 、"false" viewgroup的drawable属性是否把它的子类的drawable的state包含进来。测试中linearlayout如果不包含该属性(false),当子widget被点击时不会出现被选中的状态。也就是子类的state不会被传递给父类了
    android:descendantFocusability="" //见下
    android:splitMotionEvents=""  //取值范围"true" "false" 定义布局是否传递touch事件到子布局
    android:layoutMode="" //取值范围 "clipBounds" "opticalBounds"  见下
    android:id="" 
    android:tag="" //listView中区别Item非常有用的Tag标签(key-value)
    android:scrollX="" //The initial horizontal scroll offset, in pixels. [dimension]最初的水平滚动的偏移,以像素为单位。
    android:scrollY="" //The initial virtual scroll offset, in pixels. [dimension]最初的竖直滚动的偏移,以像素为单位。
    android:background="" 
    android:padding="" //取值示例"0dp" 控件内容(文本图片子控件等)距离控件四个方向边界的距离
    android:paddingLeft="" 
    android:paddingTop="" 
    android:paddingRight="" 
    android:paddingBottom="" 
    android:paddingStart="" //见下  文字对齐方式详解
    android:paddingEnd="" //见下  文字对齐方式详解
    android:foreground="" //设置布局的前景图,前景图不会被子元素覆盖
    android:foregroundGravity="" //设置布局前景图的位置
    android:foregroundInsidePadding="" //
    android:focusable="" //取值"true" "false"  能否获得焦点(按键)
    android:focusableInTouchMode="" //取值"true" "false"  是否可以通过touch获取到焦点(android:focusable 为先决条件)
    android:fitsSystemWindows="" //取值"true" "false"  设置布局调整时是否考虑系统窗口(如状态栏)
    android:fadeScrollbars="" //取值"true" "false" 滚动条自动隐藏
    android:fadingEdge=""  //设置拉滚动条时 ,边框渐变的方向。none(边框颜色不变),horizontal(水平方向颜色变淡),vertical(垂直方向颜色变淡)。
    android:fadingEdgeLength="" //滚动条渐变长度
    android:filterTouchesWhenObscured="" //取值范围  "true" "false"所在窗口被其它可见窗口遮住时,是否过滤触摸事件
    android:visibility="" //取值范围 "gone" "visible" "invisible"(虽不可见,但占据布局位置)
    android:scrollbars=""//取值范围 "none" "horizontal" "vertical" 设置滚动条
    android:scrollbarStyle="" //outsideInset :  该ScrollBar显示在视图(view)的边缘,增加了view的padding. 如果可能的话,该ScrollBar仅仅覆盖这个view的背景.                                  insideInset :该ScrollBar显示在padding区域里面,增加了控件的padding区域,该ScrollBar不会和视图的内容重叠.                                                    outsideOverlay :  该ScrollBar显示在视图(view)的边缘,不增加view的padding,该ScrollBar将被半透明覆盖                                                         insideOverlay : 该ScrollBar显示在内容区域里面,不会增加了控件的padding区域,该ScrollBar以半透明的样式覆盖在视图(view)的内容                    
    android:isScrollContainer=""  //取值范围 "true""false" 设置当前View是否为滚动容器(是否可以为输入法腾出空间而隐藏)
    android:scrollbarFadeDuration="" //褪色时间
    android:scrollbarDefaultDelayBeforeFade="" //设置滚动条N毫秒后开始淡化,以毫秒为单位。
    android:scrollbarSize="" //设置滚动条大小
    android:scrollbarThumbHorizontal="@drawable" //设置水平滚动条的drawable
    android:scrollbarThumbVertical="@drawable" //设置垂直滚动条的drawable.
    android:scrollbarTrackHorizontal="@drawable"//设置水平滚动条背景(轨迹)的色drawable
    android:scrollbarTrackVertical="@deawable" //设置垂直滚动条背景(轨迹)的drawable注意直接
    android:scrollbarAlwaysDrawHorizontalTrack="true/false" //设置水平滚动条是否含有轨道
    android:scrollbarAlwaysDrawVerticalTrack="true/false"  // 设置垂直滚动条是否含有轨道
    android:requiresFadingEdge="none/horizontal/vertical" //定义褪色时滚动边缘
    android:nextFocusLeft="@+id/" //Up键按下之后,哪一个控件获得焦点(被选中)
    android:nextFocusRight="@+id/" 
    android:nextFocusUp="@+id/" 
    android:nextFocusDown="@+id/" 
    android:nextFocusForward="@+id/" 
    android:clickable="true/false" 
    android:longClickable="true/false" 
    android:saveEnabled="true/false" //设置是否在窗口冻结时(如旋转屏幕)保存View的数据
    android:drawingCacheQuality="auto|low|hight" //设置绘图缓存质量 
    android:keepScreenOn="true/false" //View在可见的情况下是否保持唤醒状态
    android:duplicateParentState="true/false"  如果设置此属性,将直接从父容器中获取绘图状态(光标,按下等)。 注意根据目前测试情况仅仅是获取绘图状态,而没有获取事件,也就是你点一下LinearLayout时Button有被点击的效果,但是不执行点击事件。
    android:minHeight="" 
    android:minWidth="" 
    android:soundEffectsEnabled="true/false" // 设置点击或触摸时是否有声音效果
    android:hapticFeedbackEnabled="true/false" // 实现单击某个视图,系统提供一个触力反馈(震动一下)
    android:contentDescription="@string/"        //图片不可见时的文字描述(盲人) 
    android:onClick="" 
    android:overScrollMode="ifContentScrolls/always/never" //滚动到边界时的效果 
    android:alpha="0.1" //透明度
    android:translationX="" //X轴的偏移距离
    android:translationY="" 
    android:transformPivotX="" //从某点的X轴偏移距离
    android:transformPivotY="" 
    android:rotation=""  //旋转
    android:rotationX="" 
    android:rotationY="" 
    android:scaleX="" //设置X轴缩放比例
    android:scaleY="" 
    android:verticalScrollbarPosition="defaultPosition/left/right"  //设置垂直滚动条的位置
    android:layerType="none/hardware/software" //绘图是否开启硬件加速
    android:layoutDirection="" //定义布局图纸的方向
    android:textDirection=""  //
    android:textAlignment="inherit/....."   //文字对齐方式
    android:importantForAccessibility="noHideDescendants/...."    //设置可达性的重要行
    android:accessibilityLiveRegion="" 
    android:labelFor=""   //添加标签
    android:measureAllChildren=""  //见下
    android:animateLayoutChanges="true"   //添加默认布局动画
    android:clipChildren="" //见下
    android:clipToPadding="" //见下转载
    android:layoutAnimation="" //设置layout动画
    android:animationCache=""
    android:persistentDrawingCache="" android:alwaysDrawnWithCache="" /> 
    

    android:descendantFocusability


    开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。

        这时候就可以使用descendantFocusability来解决啦,API描述如下:

    android:descendantFocusability

    Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.

    Must be one of the following constant values.

     

    该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

    属性的值有三种:

            beforeDescendants:viewgroup会优先其子类控件而获取到焦点

            afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

            blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

     

    通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了

    android:layoutMode

    Defines the layout mode of this ViewGroup.

    Must be one of the following constant values.

    Constant Value Description
    clipBounds 0 Use the children’s clip bounds when laying out this container.铺设这种容器时,使用子控件剪辑边界。
    opticalBounds 1 Use the children’s optical bounds when laying out this container.铺设这种容器时,使用子控件光纤边界界。

    This corresponds to the global attribute resource symbol layoutMode.

    android:paddingstart

    Android 4.1(Jelly Bean)  在 TextView  EditText 元素里对“双向文字顺序”提供了有限的功能支持,允许应用程序在编辑和显示字符的时候,能够同时支持从左到右(LTR)以及从右到左(RTL)的排列格式。Android 4.2目前已经对“从右到左”的文字排列顺序给予了原生级别的全面支持,包括提供了一个布局镜面工具,使得开发者把能够将优质的用户体验带给每一位用户,不管该用户的书写顺序是从左到右,还是从右到左。

    Android 4.2保证了该新特性不会影响到目前已经存在程序,如果之前的程序代码不修改,其应用的外观将维持现状。如果你想要修改程序,那么仅仅需要很小的改动,应用就可以自动地被“镜面反射”,这样就能轻易地将系统语言设置为从右到左的书写格式(阿拉伯语,希伯来语和波斯语都采用这种格式)。例如,下面的截图就展示了上述的设置效果:

    从左到右的布局方式从左到右的布局方式

     

    从右到左的布局方式从右到左的布局方式

     

    要实现RTL(从右到左)的布局镜面反射,仅仅需要遵循下列步骤就可以做到:

    1. 在你的应用程序声明文件(manifest)里声明开启RTL mirroring的支持。具体做法是:在manifest.xml声明文件的<application>元素中,添加 android:supportsRtl=”true”

    2. 修改应用程序中所有的“left/right”布局属性,改为对应的”start/end”布局

    1)如果你的应用程序是针对Android 4.2目标平台(应用的targetSdkVersion或者minSdkVersion是17或者更高), 那么你就应当用“start”和“end”替换原来的“left”和“right”。例如,android:paddingLeft应当被替换为android:paddingStart。

    2)  如果你想让你的应用程序与Android 4.2之前的版本保持兼容(也就是与targetSdkVersion或者minSdkVersion为16或者更早的版本),那么你应当既加上“start”和“end”,又加上“left”和“right”。例如,你应当同时写上:adnroid:paddingLeft和android:paddingStart。

     

    为了更精确地控制应用程序在UI上的文字书写顺序(从左到右,或者从右到左),Android 4.2 引入了如下的API:

    android:layoutDirection —该属性设置组件的布局排列方向

    android:textDirection — 该属性设置组件的文字排列方向

    android:textAlignment — 该属性设置文字的对齐方式

    getLayoutDirectionFromLocale() —该方法用于获取指定地区的惯用布局方式

    在使用从右到左的排列方式时,你甚至创建自定义的布局方式,可绘制对象,以及其他资源。仅仅是简单地使用资源匹配器“ldrtl”对你的资源进行一下标识,你就可以把资源定义为“从右到左方向的资源”。在调试和优化从右到左的布局方面,HierarchyViewer目前支持对start/end属性,布局方向,文字方向,文字对齐方式等所有信息的层次化显示。

    那么现在是时候为所有的用户开发优美的Android应用程序了,无论用户的文字语言习惯是从左到右,还是从右到左。我们非常期待看到这些优美应用的产生!

    android:foreground


    1. android:foreground  设置布局的前景图,前景图不会被子元素覆盖
    2. android:foregroundGravity 设置布局前景图的位置

    对于FrameLayout.LayoutParams,这里仅有android:layout_gravity属性,可以查看前面文章
    http://isux.tencent.com/learn-android-from-zero-session3.html

    我们可以实践一下:
    新建一个Android项目,然后在layout文件夹找到布局xml文件并写入以下布局
    QQ图片20140704105256

    运行效果如下:
    QQ截图20140704105354


    android:measureAllChildren

    viewFlipper中的item如何动态设置高度?

    例如:

    <ViewFlipper
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom">
    
    <include layout="@layout/layoutone"/>
    
    <include layout="@layout/layouttwo"/>
    
    <include layout="@layout/layoutthree"/>
    
    </ViewFlipper>

    假如想做成一个layoutone是50dp,layouttwo是50dp,layoutthree是80dp高度的话,你会发现在子布局中设置高度后,ViewFlipper切换时总是以子view中高度最大的值为其高度值,也就是80dp。但是又不想让layoutone和layouttwo太高,开始的时候想通过LayoutParams动态设置吧,可惜不行(把viewflipper单独出来才行),然后找到需要设置android:measureAllChildren=”false”,或者代码调用setMeasureAllChildren(false);即可,因为默认情况下measureAllChildren=true。设置后各个view的高度就不同了。该属性也适合FrameLayout等。

    原因:参见FrameLayout#onMeasure(int, int)的源码,android:measureAllChildren=”true”时,将所有children加入到mMeasureAllChildren的链表中,然后再重新measure下。

    android:clipChildren

    效果图

    看到这个图时你可以先想想如果是你,你怎么实现这个效果。马上想到用RelativeLayout?NO,NO,NO,,,

     

    二、实现代码

    复制代码
    <?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:clipChildren
    =”false”
        android:orientation
    =”vertical” >

        <android.support.v4.view.ViewPager
            
    android:id=”@+id/view_pager”
            android:layout_width
    =”match_parent”
            android:layout_height
    =”0dip”
            android:layout_weight
    =”1.0” />

        <LinearLayout
            
    android:layout_width=”match_parent”
            android:layout_height
    =”48dip”
            android:background
    =”#B0C4DE”
            android:orientation
    =”horizontal” >

            <ImageView
                
    android:layout_width=”0dip”
                android:layout_height
    =”fill_parent”
                android:layout_weight
    =”1.0”
                android:scaleType
    =”fitCenter”
                android:src
    =”@drawable/ic_launcher” />

            <ImageView
                
    android:layout_width=”0dip”
                android:layout_height
    =”fill_parent”
                android:layout_weight
    =”1.0”
                android:scaleType
    =”fitCenter”
                android:src
    =”@drawable/ic_launcher” />

            <ImageView
                 
    android:layout_width=”0dip”
                android:layout_height
    =”64dip”
                android:layout_gravity
    =”bottom”
                android:layout_weight
    =”1.0”
                android:scaleType
    =”fitCenter”
                android:src
    =”@drawable/ic_launcher” />

            <ImageView
                
    android:layout_width=”0dip”
                android:layout_height
    =”fill_parent”
                android:layout_weight
    =”1.0”
                android:scaleType
    =”fitCenter”
                android:src
    =”@drawable/ic_launcher” />

            <ImageView
                
    android:layout_width=”0dip”
                android:layout_height
    =”fill_parent”
                android:layout_weight
    =”1.0”
                android:scaleType
    =”fitCenter”
                android:src
    =”@drawable/ic_launcher” />
        </LinearLayout>

    </LinearLayout>
    复制代码

      代码说明:

    1、只需在根节点设置android:clipChildren为false即可,默认为true

    2、可以通过android:layout_gravity控制超出的部分如何显示。

    3、android:clipChildren的意思:是否限制子View在其范围内

     

    翻文档找到下面介绍



    android:clipChildren setClipChildren(boolean)        Defines whether a child is limited to draw inside of its bounds or not. 
    android:clipToPadding setClipToPadding(boolean)Defines whether the ViewGroup will clip its drawing surface so as to exclude the padding area. 

    2. clipToPadding用来定义ViewGroup是否允许在padding中绘制。默认情况下,cliptopadding被设置为ture, 也就是把padding中的值都进行裁切了。1.clipChild用来定义他的子控件是否要在他应有的边界内进行绘制。 默认情况下,clipChild被设置为true。 也就是不允许进行扩展绘制。

    还有该功能是android第一个版本就已经提供的方法。 所有可以跨任意android版本使用。

     

    这两个属性联合起来能干什么呢? 哈, 用来做一些类似于心形放大等点击特效非常合适啊。    不用去更改布局, 只需加入这两个属相,并引入动画效果就完成了。

    按照上面的思路,做个demo吧。

    先看看最后的效果吧, 点击第三个机器人就会播放一个变大的效果(类似于心变大的效果)

    废话不多说,上关键代码:

      1.  布局代码(核心)

        主要看设的两个关键属性android:clipChildren和android:clipToPadding均为false。  这就让点击第三个小人时,可以跨边界进行绘制,并且允许其在padding区域内绘制。

    复制代码
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity"
        android:clipChildren="false" 
        android:clipToPadding="false">
    
        <ImageView
            android:id="@+id/img1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/ic_launcher" />
    
        <ImageView
            android:id="@+id/img2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/ic_launcher" />
    
        <ImageView
            android:id="@+id/img3"
            android:onClick="AA"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@android:color/black"
            android:src="@drawable/ic_launcher" />
    
        <ImageView
            android:id="@+id/img4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/ic_launcher" />
    
        <ImageView
            android:id="@+id/img5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/ic_launcher" />
    
        <ImageView
            android:id="@+id/img6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:src="@drawable/ic_launcher" />
    
    </LinearLayout>
    
    复制代码

     2. 其他辅助代码,如动画和act等内容

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <scale
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:toXScale="3.0"
        android:toYScale="3.0"
        android:duration="2000"
           android:pivotX="50%"
           android:pivotY="50%"
        >
    </scale>
    复制代码

     

    复制代码
    package com.example.clipchildren;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.widget.ImageView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        //只对第三个小人做放大动作
        ImageView image3 =null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            image3 = (ImageView) findViewById(R.id.img3);
        }
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        public void AA(View view) {
            Toast.makeText(this, "aa", Toast.LENGTH_SHORT).show();
            Animation an = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.anims);
            image3.startAnimation(an);
        }
    
    }
    复制代码

     3. 除了这种应用,网上还有其他人对这两个属性的妙用:

      用viewPaper来实现一个Gallery效果:http://www.iteye.com/topic/1129898






    展开全文
  • layout布局

    2019-02-27 11:48:50
    android之六大布局 1、在4.0以前版本中一共有五种布局,都是ViewGroup的子类。分别是AbsoluteLayout、...(中文分别是:绝对布局、相对布局、线性布局、帧布局、表格布局)。 2、在2.2操作系统中将Absolut...

    android之六大布局
    1、在4.0以前版本中一共有五种布局,都是ViewGroup的子类。分别是AbsoluteLayout、RelativeLayout、LinearLayout、(FrameLayout)、TableLayout。而TableLayout是LinearLayout的子类。(中文分别是:绝对布局、相对布局、线性布局、帧布局、表格布局)。
    2、在2.2操作系统中将AbsoluteLayout过期。而目前TableLayout也逐渐少用。
    3、在4.0之后又新增GridLayout。(GridLayout最经典的案例是计算器界面)
    总之,Android中一共有六种布局。

    目前推荐使用RelativeLayout、LinearLayout、GridLayout三种布局。

    所以下面我们只着重介绍RelativeLayout、LinearLayout、GridLayout三大布局。
    LinearLayout:
    LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的containers,
    超过边界时,某些控件将缺失或消失。因此一个垂直列表的每一行只会有一个widget或者是container,而不管他们有多宽,而一个水平列表
    将会只有一个行高(高度为最高子控件的高度加上边框高度)。LinearLayout保持其所包含的widget或者是container之间的间隔以及互相对齐
    (相对一个控件的右对齐、中间对齐或者左对齐)。
    (一)、概念:线性布局控制其中的控件或组件横向或纵向排列。线性布局布局中,每一行或每一列只能放一个控件。并且线性布局不会换行。当控件排列到窗体边缘,后面的控件就被隐藏,而不会显示出来。
    线性布局的默认方向是水平方向(Horizontal)。vertical

    (二)、LinearLayout的常用属性:
    1.android:orientation 定义布局内控件或组件的排列方式
    可选项:vertical 、 horizontal

    【备注:】
    颜色有RGB颜色格式和ARGB格式。RGB是红绿蓝三原色。而ARGB是带alpha的三原色,即有透明度的三原色。
    #FFFFFF 代表白色
    #000000 黑色
    #FFFFFFFF 完全不透明
    #00FFFFFF 完全透明
    #88FFFFFF 半透明

    6.android:layout_weight 设置控件的权重。即各控件在水平或者垂直方向上平均分配。
    备注:如果是水平方向设置权重,要将android:layout_width设置为0dp,如果是垂直方向上使用权重,要将android:layout_height设置为0dp。否则权重容易受到高度或宽度的干扰而出现偏差。

    7.android:gravity 该属性用来控制该View的内容物的位置。
    如果该属性是定义在布局节点中,则该布局中所有控件的位置都受到这个属性的控制。
    如果该属性出现在Button、TextView、EditText等控件中,则用来控制这些控件上的文字的位置。
    可选项有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。
    【备注:】本属性与android:layout_gravity不同。

    8.android:layout_gravity 该属性用于设置控件相对于容器的对齐方式。
    可选项有:top、bottom、left、right、center_vertical、center_horizontal 、fill_vertical 、 center、fill等等。
    这些可选项中不是适用于每一种布局。在垂直线性布局中,android:gravity为bottom不起作用;而水平线性布局中,android:gravity为right不起作用。
    【备注:】而本属性是android:layout_gravity属性,与 android:gravity 属性不同。

    (三)、LinearLayout的特有属性:【重新归纳:去除公共属性后的特有属性】
    1、android:orientation 布局管理器内组件的排列方式
    2、android:gravity 设置布局管理器内组件的对齐方式
    3、android:weightSum

    (四)、 LinearLayout 子元素的特有属性:
    1、android:layout_weight 子元素在 LinearLayout 中所占的权重
    2、android:layout_gravity 子元素在 LinearLayout 中的对齐方式
    RelativeLayout:
    (一)、概念:指按着控件之间的相对位置来进行布局。
    RelativeLayout是一个允许子视图相对于其他兄弟视图或是父视图显示的视图组(通过ID指定)。
    每个视图的位置能够指定它相对于兄弟(比如在其他视图的左边或是下边)或是父视图(这里是指相对布局容器,
    比如底部对齐、中间偏左)的位置。
    (二)、RelativeLayout特有属性:
    1、android:gravity 设置布局容器内子控件的对齐方式
    2、android:ignoreGravity=“id” 设置布局管理器内哪个控件不受gravity属性的影响

    (三)、RelativeLayout子元素的特有属性:LayoutParams
    A、第一组:指兄弟控件之间的相对位置。该组属性的值是另一个控件的id。
    layout_toRightOf 该控件在哪个控件的右侧
    layout_toLeftOf 该控件在哪个控件的左侧
    layout_above 该控件在哪个控件的上侧
    layout_below 该控件在哪个控件的下侧

    B、第二组:指兄弟控件之间的对齐关系。该组属性的值是另一个控件的id。
    1
    layout_alignRight 该控件与哪个控件的右对齐
    layout_alignLeft 该控件与哪个控件的左对齐
    layout_alignTop 该控件与哪个控件的顶对齐
    layout_alignBottom 该控件与哪个控件的底对齐

    C、第三组:指控件与父布局之间的对齐关系。该组属性的值是true或者false。
    1
    layout_alignParentRight 该控件与父布局控件的右对齐吗?
    layout_alignParentLeft 该控件与父布局控件的左对齐吗?
    layout_alignParentTop 该控件与父布局控件的顶端对齐吗?
    layout_alignParentBottom 该控件与父布局控件的底部对齐吗?
    layout_centerInParent 该控件位于父布局控件的中心位置吗?
    layout_centerVertical 该控件位于父布局控件的垂直中心位置吗?
    layout_centerHorizontal 该控件位于父布局控件的水平中心位置吗?

    GridLayout:
    1、android:layout_column
    属性说明: 显示该控件的列。例如,android:layout_column=“0”,表示在第1列显示该控件;android:layout_column=“1”,表示在第2列显示该控件。

    2、android:layout_row
    属性说明: 该控件所在行。例如,android:layout_row=“0”,表示在第1行显示该控件;android:layout_row=“1”,表示在第2行显示该控件。它和 android:layout_column类似。

    3、android:layout_columnSpan
    属性说明: 列合并。即该控件所占的列数。例如,android:layout_columnSpan=“2”,表示该控件占2列。

    4、android:layout_rowSpan
    属性说明: 行合并。即该控件所占的行数。例如,android:layout_rowSpan=“2”,表示该控件占2行。

    5、android:layout_gravity
    属性说明:该控件的布局方式。选项值:
    top – 控件置于容器顶部,不改变控件的大小。
    bottom – 控件置于容器底部,不改变控件的大小。
    left – 控件置于容器左边,不改变控件的大小。
    right – 控件置于容器右边,不改变控件的大小。
    center_vertical – 控件置于容器竖直方向中间,不改变控件的大小。
    fill_vertical – 如果需要,则往竖直方向延伸该控件。
    center_horizontal – 控件置于容器水平方向中间,不改变控件的大小。
    fill_horizontal – 如果需要,则往水平方向延伸该控件。
    center – 控件置于容器中间,不改变控件的大小。
    fill – 如果需要,则往水平、竖直方向延伸该控件。
    clip_vertical – 垂直剪切,剪切的方向基于该控件的top/bottom布局属性。若该控件的gravity是竖直的:若它的gravity是top的话,则剪切该控件的底部;若该控件的gravity是bottom的,则剪切该控件的顶部。
    clip_horizontal – 水平剪切,剪切的方向基于该控件的left/right布局属性。若该控件的gravity是水平的:若它的gravity是left的话,则剪切该控件的右边;若该控件的gravity是 right的,则剪切该控件的左边。
    start – 控件置于容器的起始处,不改变控件的大小。
    end – 控件置于容器的结束处,不改变控件的大小。
    二:android之UI组件

    什么是View—>Object
    这个类是用户接口的基础构件。 View 表示屏幕上的一块矩形区域,负责绘制这个区域和事件处理。
    View 是所有widget类的基类,Widget 类用于创建交互式UI构件(按钮,输入框等)。
    View 类的ViewGroup子类是layout 的基类,Layout是一个不可见的容器,它保存着View(或ViewGroup)并定义这些View的layout 属性。
    可以说View类是用户接口类中最重要的一个类。

    (一)、控件名称:【标红色的为常用的】
    TextView 文本视图
    EditText 文本编辑框
    Button 按钮
    ImageView、Gallery 图像视图、画廊(建议过期)
    ImageButton 图片按钮
    ToggleButton 、Switch 开关按钮、开关
    RadioButton 单选按钮
    CheckBox 多选框
    Spinner 下拉列表
    AutoCompleteTextView 自动完成文本框
    ProgressBar 进度条
    SeekBar 拖动条
    RatingBar 星级评分条
    TimePicker、DatePicker 时间选择器、日期选择器
    AnalogClock、DigitalClock 模拟时钟、数字时钟
    Dialog(AlertDialog、ProgressDialog、TimePickerDialog、DatePickerDialog)提示对话框、进度对话框、时间选择对话框、日期选择对话框
    ListView、GridView RecyclerView(5.0之后新控件) 列表视图【最重要的UI组件】、 网格视图
    ScrollView 滚动视图
    ExpandableListView 可展开列表视图
    WebView 网页视图
    SearchView 搜索框
    TabHost 书签选项卡
    Notification 、Toast 通知 、 吐司(短时提醒)
    Menu(OptionMenu /SubMenu、ContextMenu) 菜单(选项菜单、上下文菜单)
    ImageSwitcher、TextSwitcher 、 ViewPager 图像切换器、文本切换器
    ActionBar ToolBar 动作导航条

    八、基本控件:——TextView:
    (一)、TextView类结构:
    java.lang.Object
    ↳ android.view.View
    ↳ android.widget.TextView

    (二)、TextView 常用属性:
    1、andorid:text 设置文本的内容
    2、 android:textColor 设置文本的颜色
    3、 android:textSize 设置文本的字体大小(sp)
    4、 andorid:height 设置文本的高度,以像素为单位
    5、 android:width 设置文本的宽度,以像素为单位
    6、 android:inputType 设置文本的类型。例如是普通文本,还是email,password,数字等等。
    7、 android:singleLine 设置文本是否是单行显示。
    8、android:gravity 设置文本框内文本的对齐方式。可选项有:top、bottom、left、right、center、fill、center_vertical、center_horizontal、fill_horizontal等等。这些属性值也可以同时指定,各属性值之间用竖线隔开。例如right|bottom
    9、android:drawableLeft 用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。
    10、android:drawableRight 用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。
    11、android:drawableTop 用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。
    12、android:drawableBottom 用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。
    13、android:autoLink 给指定的文本增加可单击的超链接。可选项为:none、web、email、phone、map和all。
    多个选项之间使用“|”分隔,也可以使用all。
    14、android:hint 设置当文本框内文本内容为空时,默认显示的提示性文字。

    【补充:】
    1、android:textAllCaps=“true” 设置所有字母都大小
    2、android:ellipsize=“end” 文字过长,设置省略号。可选项:start , end ,middle,marquee
    android:ellipsize=“start” 省略号在开头
    android:ellipsize=“middle” 省略号在中间
    android:ellipsize=“end” 省略号在结尾
    android:ellipsize=“marquee” 跑马灯显示
    【备注:】要实现跑马灯效果。要同时具有以下属性。
    android:ellipsize=“marquee”
    android:singleLine=“true”
    android:focusable=“true”
    android:focusableInTouchMode=“true”
    android:marqueeRepeatLimit=“marquee_forever”

    九、基本控件:——EditText:
    (一)、 EditText 类结构:
    java.lang.Object
    ↳ android.view.View
    ↳ android.widget.TextView
    ↳ android.widget.EditText

    所以 EditText 继承了TextView的所有属性。

    (二)、android:inputType的可选项:
    android:inputType=“textPersonName”
    android:inputType=“textPassword”
    android:inputType=“numberPassword” 只可以输入数字
    android:inputType=“textEmailAddress”
    android:inputType=“phone” 只允许输入数字,括号等特殊符号,不可以输入字母。
    android:inputType=“textPostalAddress”
    android:inputType=“time”
    android:inputType=“date”
    android:inputType=“number”

    十、基本控件:——Button:
    (一)、Button类结构:
    java.lang.Object
    ↳ android.view.View
    ↳ android.widget.TextView
    ↳ android.widget.Button

    所以Button继承了TextView的所有属性。

    【特别补充:】sp、dp、dip、pt、px等单位的区别?【重点】
    dpi dpi指像素密度。dots per inch ,即每英寸内像素点的个数。它不是表示长度的单位。
    在android中认为:低(120dpi),中(160dpi),高(240dpi),超高(320dpi)。随着技术的增长,实际dpi已经超出这个定义范围。
    dip device independent pixels ,即与设备无关的像素。目前这个单位已经被dp所取代,而不建议使用dip。
    dp 与dip的概念一样。不过dp已经取代了dip。在Android中用来表示非文字大小的尺寸。例如:外边距、内填充等。
    px = dp * (dpi / 160)
    3.7寸屏幕,分辨率320*480手机上,正好1px = 1dp。
    sp scale independent pixel ,即与缩放比例无关的像素。在android中常用来表示文字大小。
    px 表示像素。因为同样是200px,但是在不同手机下显示的大小是不同的。
    pt point磅。1磅=1/74英寸
    xlarge 屏幕至少:960dp x 720dp
    large 屏幕至少 :640dp x 480dp
    normal 屏幕至少 :480dp x 320dp
    small 屏幕至少 :426dp x 320dp
    总之:dp是用来定义非文字的尺寸,sp用来定义文字大小。px只用于产生一条一像素的分割线时使用。

    展开全文
  • Android RelativeLayout布局

    万次阅读 2020-01-02 12:32:02
    相对布局(RelativeLayout)将子视图以相对位置显示。默认显示在父视图的左上角。 layout_alignParentTop,父视图的上边 layout_alignParentBottom,父视图的下边 layout_alignParentLeft,父视图的左边 ...

    1. RelativeLayout类

    相对布局(RelativeLayout)将子视图以相对位置显示。默认显示在父视图的左上角。

    • layout_alignParentTop,父视图的上边
    • layout_alignParentBottom,父视图的下边
    • layout_alignParentLeft,父视图的左边
    • layout_alignParentRight,父视图的右边

    设置4个子视图在边角位置。

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <!-- 左上角显示 -->
        <TextView
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:text="Default"
            android:gravity="center"
            android:background="#ffa6a5aa"/>
        <!-- 右上角显示 -->
        <TextView
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:layout_alignParentRight="true"
            android:text="Right"
            android:gravity="center"
            android:background="#ffa6a5aa"/>
        <!-- 左下角显示 -->
        <TextView
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:layout_alignParentBottom="true"
            android:text="Bottom"
            android:gravity="center"
            android:background="#ffa6a5aa"/>
        <!-- 右下角显示 -->
        <TextView
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:text="Right|Bottom"
            android:gravity="center"
            android:background="#ffa6a5aa"/>
    </RelativeLayout>
    

    效果如下
    这里写图片描述

    2. 居中显示

    layout_centerXX可以在父视图内居中显示

    • layout_centerInParent,相对于父视图完全居中
    • layout_centerHorizontal,相对于父视图水平居中
    • layout_centerVertical,相对于父视图垂直居中

    可以配合alignParentXX使用

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:layout_width="120dp"
            android:layout_height="40dp"
            android:text="centerInParent"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_centerInParent="true"/>
    
        <TextView
            android:layout_width="120dp"
            android:layout_height="40dp"
            android:text="centerHorizontal"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_centerHorizontal="true"/>
    
        <TextView
            android:layout_width="120dp"
            android:layout_height="40dp"
            android:text="alignParentBottom"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"/>
    
        <TextView
            android:layout_width="120dp"
            android:layout_height="40dp"
            android:text="centerVertical"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_centerVertical="true"/>
    
        <TextView
            android:layout_width="120dp"
            android:layout_height="40dp"
            android:text="alignParentRight"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_centerVertical="true"
            android:layout_alignParentRight="true"/>
    
    </RelativeLayout>
    

    效果如下
    这里写图片描述

    3. 相对视图对齐

    • layout_above,视图的下边与相对视图的上边对齐
    • layout_below,视图的的上边与相对视图的下边对齐
    • layout_toRightOf,视图的左边与相对视图的右边对齐
    • layout_toLeftOf,视图的右边与相对视图的左边对齐

    设置的子视图的相对位置,

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:id="@+id/tv_center"
            android:layout_width="150dp"
            android:layout_height="60dp"
            android:layout_centerInParent="true"
            android:text="center"
            android:background="#ffffcc00"
            android:gravity="center" />
    
        <TextView
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:text="above"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_above="@id/tv_center"/>
    
        <TextView
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:text="below"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_below="@id/tv_center"/>
    
        <TextView
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:text="toRightOf"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_toRightOf="@id/tv_center"/>
    
        <TextView
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:text="toLeftOf"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_toLeftOf="@id/tv_center"/>
    
    </RelativeLayout>
    

    效果如下
    在这里插入图片描述

    4. 边对齐

    • layout_alignTop,视图与基准视图的上边对齐
    • layout_alignBottom:视图与基准视图的下边对齐
    • layout_alignLeft:视图与基准视图的左边对齐
    • layout_alignRight:视图与基准视图的右边对齐
    • layout_alignBaseline:视图与基准视图的基准线对齐

    设置的子视图某条边的对齐方式,

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <TextView
            android:id="@+id/tv_center"
            android:layout_width="150dp"
            android:layout_height="100dp"
            android:layout_centerInParent="true"
            android:text="center"
            android:textSize="32sp"
            android:background="#ffffcc00"
            android:gravity="center" />
    
        <TextView
            android:layout_width="60dp"
            android:layout_height="20dp"
            android:text="alignTop"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_alignTop="@id/tv_center"/>
    
        <TextView
            android:layout_width="60dp"
            android:layout_height="20dp"
            android:text="alignBottom"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_alignBottom="@id/tv_center"/>
    
        <TextView
            android:layout_width="60dp"
            android:layout_height="20dp"
            android:text="alignLeft"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_alignLeft="@id/tv_center"/>
    
        <TextView
            android:layout_width="60dp"
            android:layout_height="20dp"
            android:text="alignRight"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_alignRight="@id/tv_center"/>
    
        <TextView
            android:layout_width="60dp"
            android:layout_height="20dp"
            android:text="alignBaseline"
            android:gravity="center"
            android:background="#ffa6a5aa"
            android:layout_alignBaseline="@id/tv_center"/>
    
    </RelativeLayout>
    

    效果如下
    在这里插入图片描述
    相关文章
    Android LinearLayout布局
    Android RelativeLayout布局
    Android ConstraintLayout布局
    Android 自定义布局

    展开全文
  • Layout布局

    2020-06-24 16:12:07
    Layout布局基础布局分栏间隔混合布局分栏偏移对齐方式响应式布局基于断点的隐藏类Row AttributesCol Attributes 通过基础的24分栏,迅速简便地创建布局 官方原文链接:ElementUI Layout布局 基础布局 使用单一分栏...
  • 这种布局比较常见,博客园很多默认主题就是这种。一般情况下,这种布局中宽度固定的区域是侧边栏,而自适应的区域是主体内容区——相信把侧边栏搞成自适应的人很少吧?要实现这种布局,也算比较简单。我们先给出html...
  • 2、android:layout_gravity="center_horizontal"表示该布局在父布局里水平居中,此时其父布局必须拥有android:orientation="vertical"属性;如代码黄色部分所示; 3、android:layout_gravity="center_verti
  • antd-layout布局

    千次阅读 2019-02-19 16:59:40
    nz-layout布局容器,其下可嵌套 nz-headernz-sider nz-content nz-footer 或 nz-layout 本身,可以放在任何父容器中。 nz-header:顶部布局,自带默认样式,其下可嵌套任何元素,只能放在 nz-layout 中。 nz-sider...
  • Android 水平平分布局和垂直平分布局

    万次阅读 2017-06-20 09:22:10
    水平平分: android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
  • Android Layout中使用include标签实现UI布局重用 1、创建一个独立的布局文件作为共享布局,common_layout.xml xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content...
  • 我先把整个
  • 转载请注明博客地址。 最近看博客看到有关于RelativeLayout布局的解释,有的解释很多是错误的。...(会对所有的对其方式解释,且主要讨论layout_alignleft layout_toleftof区别) android:layout_above
  • Android系统五大布局详解Layout

    万次阅读 多人点赞 2013-08-17 16:33:46
    我们知道Android系统应用程序一般是由多个Activity组成,而这些Activity以视图的形式展现...这就要用到Android的布局管理器了,网上有人比喻的很好:布局好比是建筑里的框架,组件按照布局的要求依次排列,就组成了用于
  • 定义共通布局 在想要引入的布局中引入 运行效果 include之后,布局变成了什么样? 当我们include两个同样的布局时 当include两个相同的布局时,如果区别? include之后,使用新的id区分 这时通过include时指定的id来...
  • 表格布局:tablelayout table布局不支持跨行跨列,所以主要布局的思想就是表格嵌套效果 outline 之前一直到不知道怎么用表格实现计算器的布局,查资料的时候
  • android布局之线性布局

    万次阅读 2011-12-07 19:25:07
    LinearLayout 线性布局有两种,分别是水平线性布局和垂直线性布局,LinearLayout属性中android:orientation为设置线性布局当其="vertical"时,为 垂直线性布局,当其="horizontal"时,为水平线性布局,不管是水平...
  • Android studio 相对布局常见属性

    万次阅读 多人点赞 2019-01-12 14:04:09
    1. 相对布局(重点):相对布局是通过相对定位的方式让控件出现在布局任意位置;  在相对布局中如果不指定控件摆放的位置,那么控件都会被默认放在RelativeLayout的左上角。因此要先指定第一个控件的位置,再根据一...
  • 相对布局是通过相对定位的方式让控件出现在布局任意位置;  在相对布局中如果不指定控件摆放的位置,那么控件都会被默认放在RelativeLayout的左上角。因此要先指定第一个控件的位置,其他控件为该位置的相对位置;...
  • Android 线性布局属性详解

    万次阅读 2015-02-04 14:03:57
    线性布局是程序中最常见的一种布局方式,线性布局可以分为水平线性布局和垂直线性布局两种,通过android:orientation属性可以设置线性布局的方向。下面是一个简单的线性布局的例子: 线性布局中,有 4 个及其...
  • GridLayout布局简介GridLayout布局是Android4.0(API Level 14)新引入的网格矩阵形式的布局控件。GridLayout属性介绍本身属性 android:alignmentMode 说明:当设置alignMargins,使视图的外边界之间进行校准。可以...
1 2 3 4 5 ... 20
收藏数 391,616
精华内容 156,646
关键字:

layout布局