爱华对view的理解之Android 相近且易混淆的13种属性.doc_第1页
爱华对view的理解之Android 相近且易混淆的13种属性.doc_第2页
爱华对view的理解之Android 相近且易混淆的13种属性.doc_第3页
爱华对view的理解之Android 相近且易混淆的13种属性.doc_第4页
爱华对view的理解之Android 相近且易混淆的13种属性.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IndexIndex1PaddingTop 与 marginTop1Layout_gravity 与 gravity1Android:gravity 与 MarginRightBottom 的关系9ListView.getCount()与ListView.getChildCount()9pendingIntent 与 Intent10View/scrollbar:outsideInset outsideOverlay insideInset insideOverlay 四个属性10Android中getWidth和getMeasuredWidth的区别11getX getRawX的区别(解释的很清楚)12PaddingTop 与 marginToppaddingTop: 在控件内部,与顶端距离marginTop: 在控件外部,与父类控件距离多远(如下图)Layout_gravity 与 gravityandroid:Layout_gravity: 在控件自身内部,android:gravity:在控件外部,与父类控件的关系(如下图)上面的都错了。正解如下:android:Layout_gravity: 定义在Button的属性里,表示button在父视图里的位置android:gravity:定义在Button的属性里,表示button内部的视图Textview在button里的位置。定义在LinearLayout的属性里,表示LinearLayout内部的视图Button在其布局里的位置。 Layout_weight/Layout_gravity仅用于 LinearLayout /TableLayout 布局里。结论:1, gravity 仅对单件, 对自身内部的物体 局左居右, 比如,对用在layout属性,那么它内部的button局右,如果用在button属性里,那么button内部的字体Textview局右。 如:图形如下:android:layout_gravity=right, 红色背景在 外部的父类视图里 局右。android:gravity=right button margin在 红色背景内部局右.又如:android:layout_gravity=left, 黄色背景在 外部的父类视图里 局左。android:gravity=right button margin在 黄色背景内部局右都是在 LinearLayout 里面定义的。疑问:有人会问, 对于上面这个, 我能不能在 button定义时,在button属性里加上android:layout_gravity=right, 而让button margin在 黄色背景内部局右呢?这个必须button的父视图是root型,否则此方法无效。这个有点复杂,因为这样你在 父类里面有android:layout_gravity, 在子类里面也有同样的android:layout_gravity, 系统会不支持。那怎么办呢? 看下面这个,仅在子类里面有android:layout_gravity, 父类是root,且啥gravity都没有。android:layout_gravity=right 让1子类在root型父视图里面局右了。android:layout_gravity=left 让2子类在root型父视图里面局左了。P.S. root型父视图LinearLayout的orientation 必须是 vertical, 如果是horziontal, 则如下:即使是root型父视图linearLayout, 也没有用。如果父视图不是root类,就出现问题了。android:layout_gravity在子视图无效。2, 3, 若LinearLayout 父视图不是root,则次一级子视图出现顺序默认是从左到右。如果想实现下图,需在这个非root类的父视图里,加入android:gravity=”right”,这样LinearLayout下的视图会默认从右向左了。4,5, 如何实现 3 个Button 并排 呢若用非root型的LinearLayout做父视图,结果如图: 从左往右排列,最后一个button 不靠右了。若用RelativeLayout,对于4个button, Relativelayout 会很吃紧。那LinearLayout 呢,我们发现,1, LinearLayout 父类若是root类,则次一级子类中 属性写android:layout_gravity是有效的;若不是root类,则失效。2, 若LinearLayout 父类不是root类,则次一级子视图出现顺序默认是从左到右。如果想实现下图,需在这个非root类的父视图里,加入android:gravity=”right”,这样LinearLayout下的视图会默认从右向左了。如何在LinearLayout里面实现下图呢?(每个button的宽度设为死值:横向:120px)(每个button的宽度设为死值:纵向:80px)如果很想实现 在 LinearLayout里面, 一个靠左,一个靠右的效果呢?用权术,党同伐异,排除异己:给第一个按钮设个100的权重,把第二个远远死死挤在右边上。 实例运用:右边箭头必须在右边,左边radiobutton必须在左边,就是用权术。Android:gravity 与 MarginRightBottom 的关系在LinearLayout 里面,如果父视图 android:gravity=Left, 证明从左向右,则Android:layout_MarginLeft 有用Android:layout_MarginTop 有用 , 其余两个无用;如果父视图 android:gravity=Right, 证明从右向左,则Android:layout_MarginRight 有用Android:layout_MarginTop 有用Android:layout_MarginBottom 有用, 其余1个无用;ListView.getCount()与ListView.getChildCount()ListView.getCount()(实际上是 AdapterView.getCount()) 返回的是其 Adapter.getCount() 返回的值。也就是“所包含的 Item 总个数”。 ListView.getChildCount()(ViewGroup.getChildCount) 返回的是显示层面(当前视图可见面)上的“所包含的子 View 个数”。 二者有什么不同?当 ListView 中的 Item 比较少无需滚动即可全部显示时,二者是等价的;当 Item 个数较多需要滚动才能浏览全部的话,getChildCount() getCount() 其中 getChildCount() 返回的是当前可见的 Item 个数。 其实 Android framework 的这一设计并不难理解:当一些 Item 当前不显示的时候为什么还要保留它们的 View 呢?移动设备的资源有限,“能省则省”嘛。pendingIntent 与 IntentPendingIntent和Intent的区别:An Intent is something that is used right now; a PendingIntent is something that may create an Intent in the future. You will use a PendingIntent with Notifications, AlarmManager, etc. PendingIntent 多用于 NotificationView/scrollbar:outsideInset outsideOverlay insideInset insideOverlay 四个属性Api 文档比较Glossary : inset 嵌入 overlap 重叠 Translucency(半透明物)Scrollbar Style属性值Display the scrollbarsinside theincreasing the paddingscrollbars will be overlaid withinsideOverlaycontent area,withoutTranslucency(半透明物)insideInsetpadded area,withnot overlap the content area of the view. outsideOverlayat the edge of the view,withouttranslucencyoutsideInsetat the edge of the view,withwill only overlap thebackground, if any. Android中getWidth和getMeasuredWidth的区别 今天看SDK, 看到这个东西不是很懂, google了一会有些许收获. 以下是我的理解.getWidth得到是某个view的实际尺寸.getMeasuredWidth是得到某view想要在parent view里面占的大小.那用法呢?getWidth在OnCreat的时候得到的是0.很奇怪, 我找到了原因: 当一个view对象创建时,android并不知道其大小,所以getWidth()和 getHeight()返回的结果是0,真正大小是在计算布局时才会计算,所以会发现一个有趣的事,即在onDraw( ) 却能取得长宽的原因。 那怎么在onCreat 的时候得到呢? width = activity.getWindowManager().getDefaultDisplay().getWidth(); height = activity.getWindowManager().getDefaultDisplay().getHeight(); 2. getMeasuredWidth必须在parent view或者它自己调用measure()函数之后才能得到. measure函数就是计算该函数需要占用的空间大小.getX getRawX的区别(解释的很清楚)getX是获取以widget左上角为坐标原点计算的轴坐标直getRawX 获取的是以屏幕左上角为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论