布局入门(一)

一,手上接了一个Android项目,因为做的是动态的布局。所以在布局上很是纠结了一下,正好趁着这个机会,总结一下LinearLayout布局上的应用方法。

一个是LinearLayout本身的布局。

1.1 命名空间

  xmlns 顾名思义xml的命名空间,(xml name space)关于命名空间上,不懂的可以百度,这里不多介绍。

1.2 排列

  ientation 英[ˌɔ:riənˈteɪʃn] 原意是排列方向。这里有vertical(纵向)horizontal(橫向)两个选项。当LinearLayout布局layout_width属性定义为

  tch_parent时,orientation的属性必须指定。其中horizontal是默认选项。
1.3 Layout_width  控件宽度,一般有match_parent(匹配父窗口)和wrap_content(内容填充)两个选项,在新版本中, fill_parent被摈弃不用,一般用
match_parent代替。
1.4 Layout_height 控件高度,属性和用法跟Layout_width相同
1.5 layout_gravity 用来设置该控件相对与父控件的位置.比如一个button 在linearlayout里,你想把该button放在linearlayout里靠左、
	靠右等位置就可以通过该属性设置. 
1.6   weightSum 定义weight总和的最大值。如果未指定该值,以所有子视图的layout_weight属性的累加值作为总和的最大值。一个典型
的案例是:通过指定子视图的layout_weight属性为0.5,并设置LinearLayout的weightSum属性为1.0,实现子视图占据可用宽度的50%。
1.7 layout_margin 指view距离父view的距离。或者说距离view的相对view的距离
1.8 apha 可见度.android:alpha="0.0"看不见的,android:alpha="0.5"透视  android:alpha="1.0"全可见

1.9  accessibilityLiveRegion辅助性服务是否应自动通知更改视图的内容描述或文本,或者子view的文字描述或文本内容;(none——不通知、polite——通知、assertive——打断语音,并通知)


二,控件的属性种类

  通常意义上讲,我们在对一个控件进行属性赋值的时候大体上有种类型的属性,一种为layout_开头的属性,一种为不是以layout_开头的属性,下面以TextView为例进行说明,如下所示

  

复制代码
 1 <RelativeLayout
 2     android:layout_width="match_parent"
 3     android:layout_height="match_parent" >
 4 
 5     <TextView
 6         android:layout_width="wrap_content"
 7         android:layout_height="wrap_content"
 8         android:text="hello_world" />
 9         
10 </RelativeLayout>
复制代码

  我为TextView设置了三个属性layout_width、layout_height以及text,可以看到这三个属性中layout_width、layout_height属性为layout_开头而text没有以Layout_开头。

  以layout_开头的属性为从容器中继承的属性,在这个例子里面即是从RelativeLayout中继承来的,TextView本身并没有此属性。而text则是TextView自身拥有的属性。

  为了说明layout属性为容器属性,我做了下面的例子,把TextView分别放置到RelativeLayout和LinearLayout中,然后对TextView设置layout_centerInParent属性,之所有选择这个属性,是因为这个属性为RelativeLayout所有而LinearLayout没有,实验代码如下

  

复制代码
 1 <RelativeLayout
 2     android:layout_width="wrap_content"
 3     android:layout_height="wrap_content" >
 4 
 5     <TextView
 6         android:layout_width="wrap_content"
 7         android:layout_height="wrap_content"
 8         android:layout_centerInParent="true"
 9         android:text="hello_world" />
10 </RelativeLayout>
11 
12 <LinearLayout
13     android:layout_width="wrap_content"
14     android:layout_height="wrap_content" >
15 
16     <TextView
17         android:layout_width="wrap_content"
18         android:layout_height="wrap_content"
19         android:layout_centerInParent="true"
20         android:text="hello world2" />
21 </LinearLayout>
复制代码

  如上进行设置之后会发现,编辑器提示“Invalid layout param in a LinearLayout: layout_centerInParent”,如下所示

  

  通过此实验可以得出结论,layout开头的属性并非TextView所拥有,而是继承的容器中关于布局的属性,继而推而广之,可以得出结论,控件的属性可以分为自身属性和容器中的布局属性。下面就通过TextView和各个布局容器一起来详细分析下属性。

LinearLayout和TextView

  这一小节主要介绍下LinearLayout和TextView的属性,先来看下TextView的属性,及属性继承关系,

  下面为TextView自身所拥有的属性

XML Attributes
Attribute Name
android:autoLink
android:autoText
android:bufferType
android:capitalize
android:cursorVisible
android:digits
android:drawableBottom
android:drawableEnd
android:drawableLeft
android:drawablePadding
android:drawableRight
android:drawableStart
android:drawableTop
android:editable
android:editorExtras
android:ellipsize
android:ems
android:fontFamily
android:freezesText
android:gravity
android:height
android:hint
android:imeActionId
android:imeActionLabel
android:imeOptions
android:includeFontPadding
android:inputMethod
android:inputType
android:lineSpacingExtra
android:lineSpacingMultiplier
android:lines
android:linksClickable
android:marqueeRepeatLimit
android:maxEms
android:maxHeight
android:maxLength
android:maxLines
android:maxWidth
android:minEms
android:minHeight
android:minLines
android:minWidth
android:numeric
android:password
android:phoneNumber
android:privateImeOptions
android:scrollHorizontally
android:selectAllOnFocus
android:shadowColor
android:shadowDx
android:shadowDy
android:shadowRadius
android:singleLine
android:text
android:textAllCaps
android:textAppearance
android:textColor
android:textColorHighlight
android:textColorHint
android:textColorLink
android:textIsSelectable
android:textScaleX
android:textSize
android:textStyle
android:typeface
android:width

  
  TextView继承属性

  

Inherited XML Attributes

From class android.view.View

Attribute Name
android:accessibilityLiveRegion
android:alpha
android:background
android:clickable
android:contentDescription
android:drawingCacheQuality
android:duplicateParentState
android:fadeScrollbars
android:fadingEdgeLength
android:filterTouchesWhenObscured
android:fitsSystemWindows
android:focusable
android:focusableInTouchMode
android:hapticFeedbackEnabled
android:id
android:importantForAccessibility
android:isScrollContainer
android:keepScreenOn
android:layerType
android:layoutDirection
android:longClickable
android:minHeight
android:minWidth
android:nextFocusDown
android:nextFocusForward
android:nextFocusLeft
android:nextFocusRight
android:nextFocusUp
android:onClick
android:padding
android:paddingBottom
android:paddingEnd
android:paddingLeft
android:paddingRight
android:paddingStart
android:paddingTop
android:requiresFadingEdge
android:rotation
android:rotationX
android:rotationY
android:saveEnabled
android:scaleX
android:scaleY
android:scrollX
android:scrollY
android:scrollbarAlwaysDrawHorizontalTrack
android:scrollbarAlwaysDrawVerticalTrack
android:scrollbarDefaultDelayBeforeFade
android:scrollbarFadeDuration
android:scrollbarSize
android:scrollbarStyle
android:scrollbarThumbHorizontal
android:scrollbarThumbVertical
android:scrollbarTrackHorizontal
android:scrollbarTrackVertical
android:scrollbars
android:soundEffectsEnabled
android:tag
android:textAlignment
android:textDirection
android:transformPivotX
android:transformPivotY
android:translationX
android:translationY
android:visibility

  也就是说这两部分加起来就是TextView的全部属性,然而我们在XML编辑器中编辑代码的时候会发现,除了以上属性外还有很多以layout开头的属性可以设置,这些就是容器的属性,下面以LinearLayout为例,实验场景如下

  

复制代码
 1 <LinearLayout
 2     android:layout_width="wrap_content"
 3     android:layout_height="wrap_content" >
 4 
 5     <TextView
 6         android:layout_width="wrap_content"
 7         android:layout_height="wrap_content"
 9         android:text="hello world2" />
10 </LinearLayout>
复制代码

  下面我们就看下LinearLayout的布局属性,通过LinearLayout.LayoutParams类来体现

  通过帮助文档可以看到,其自身属性为以下内容

  

XML Attributes
Attribute Name
android:layout_gravity
android:layout_weight

  还有继承了两类属性,android.view.ViewGroup.MarginLayoutParams

  

Attribute Name
android:layout_marginBottom
android:layout_marginEnd
android:layout_marginLeft
android:layout_marginRight
android:layout_marginStart
android:layout_marginTop

  和android.view.ViewGroup.LayoutParams

attributeNameRelatedMethodDescription
android:layout_height Specifies the basic height of the view
android:layout_width Specifies the basic width of the view


  所以,TextView可以设置的属性即为自身属性和以上的布局属性。  以上所有属性就是布局控件提供的布局属性

后记

  以上我们通过LinearLayout和TextView的组合分析了Android中布局的属性使用情况,通过以上的分析使得我们能够了解到控件属性的由来,这样就可以更加随心所欲的进行界面布局了。

  同样的道理,可以去分析RelativeLayout、TableLayout等等。

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值