android布局属性⽤代码表⽰,AndroidLayout布局属性全解Android Layout 布局属性全解
Android有基本Layout:FrameLayout,LinearLayout,TableLayout,RelativeLayout,AbsoluteLayout。
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" 距离⽗控件左间距margin属性怎么用
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.ConstantValueDescription
clipBounds0Use the children's clip bounds when laying out this container.铺设这种容器时,使⽤⼦控件剪辑边界。
opticalBounds1Use the children's optical bounds when laying out this container.铺设这种容器时,使⽤⼦控件光纤边界界。
This corresponds to the global attribute resource symbol layoutMode.
Related MethodssetLayoutMode(int)
android:paddingstart
Android 4.1(Jelly Bean) 在 TextView 和 EditText 元素⾥对“双向⽂字顺序”提供了有限的功能⽀持,允许应⽤程序在编辑和显⽰字符的时候,能够同时⽀持从左到右(LTR)以及从右到左(RTL)的排列格式。Android
4.2⽬前已经对“从右到左”的⽂字排列顺序给予了原⽣级别的全⾯⽀持,包括提供了⼀个布局镜⾯⼯具,使得开发者把能够将优质的⽤户体验带给每⼀位⽤户,不管该⽤户的书写顺序是从左到右,还是从右到左。
Android 4.2保证了该新特性不会影响到⽬前已经存在程序,如果之前的程序代码不修改,其应⽤的外观将维持现状。如果你想要修改程序,那么仅仅需要很⼩的改动,应⽤就可以⾃动地被“镜⾯反射”,这样就能轻易地将系统语⾔设置为从右到左的书写格式(阿拉伯语,希伯来语和波斯语都采⽤这种格式)。例如,下⾯的截图就展⽰了上述的设置效果:
从左到右的布局⽅式
从右到左的布局⽅式
要实现RTL(从右到左)的布局镜⾯反射,仅仅需要遵循下列步骤就可以做到:
1. 在你的应⽤程序声明⽂件(manifest)⾥声明开启RTL mirroring的⽀持。具体做法是:在l
声明⽂件的元素中,添加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
android:foreground 设置布局的前景图,前景图不会被⼦元素覆盖
android:foregroundGravity 设置布局前景图的位置
对于FrameLayout.LayoutParams,这⾥仅有android:layout_gravity属性,可以查看前⾯⽂章
我们可以实践⼀下:
新建⼀个Android项⽬,然后在layout⽂件夹到布局xml⽂件并写⼊以下布局
运⾏效果如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论