「Efficient Android Threading 笔记」- C1 Android Components and the Need for Multiprocessing Android RecyclerView Android Socket Programming Supporting Multiple Screens Make a Reusable UI in Android App Development 如何在 Android Studio 中包含 *.so library,并使用库中定义的方法? 使用 SpannableString 格式化字符串,实现前景色、下划线、超链接、图文混排等 如何使用 bound service 完成进程间通信? 创建自定义视图 Creating custom views 通过 Android Theme & Style 定制应用的样式 「译」Android ViewPropertyAnimator 介绍 Android Animation Interpolator - Android 动画插值器源码笔记 「译」Android Animation in Honeycomb by Chet Haase(Android 3.0系统中的动画机制) 从 Android Sample ApiDemos 中学习 android.animation API 的用法 如何学习 Android Animation? 如何实现 Android ListView「上拉加载更多」? 「译」向Big Nerd Ranch提问:为什么Fragment在Android App开发中非常重要? 分类整理我在 SegmentFault 上针对某些问题作的回答 Android Servcie 后台服务总结笔记 如何在Android设备旋转时暂存数据以保护当前的交互状态? Android Message Handler 消息处理机制总结笔记 如何获取FragmentTabHost中指定标签页的Fragment? Fragment子类必须包含一个public无参构造器 如何更新及替换ViewPager中的Fragment? 如何使用Android UI Fragment开发“列表-详情”界面? 一个Android音频文本同步的英文有声读物App的开发过程 「Android编程权威指南笔记」Android应用本地化 通过jfeinstein10/SlidingMenu实现Android侧滑菜单 为Ubuntu14.04部署Android App的Eclipse开发环境 「Android编程权威指南笔记」使用ListFragment显示列表 「Android编程权威指南笔记」SDK版本与兼容 「Android编程权威指南笔记」Android布局和组件 「Android编程权威指南笔记」UI Fragment 「Android编程权威指南笔记」Activity 第一次开发iOS App和Android的对比总结笔记 「App Training笔记」创建第一个应用 「App Training笔记」开发入门训练大纲 Android APP - 从远程FTP服务器下载文件到本地

「Android编程权威指南笔记」Android布局和组件

2015年03月15日

第8章 使用布局与组件创建用户界面

样式、主题及主题属性

样式(style)是XML资源文件,含有用来描述组件行为和外观的属性定义。
主题(theme)是各种样式的集合。
使用主题属性引用(theme attribute reference),相当于告知Android运行资源管理器:“在应用主题里找到名为listSeparatorTextViewStyle的属性。该属性指向其他样式资源,请将其资源的值放在这里”。
<TextView style="?android:listSeparatorTextViewStyle" />
使得屏幕上的TextView组件看起来是以列表样式分隔开的。

dp、sp以及屏幕像素密度

常见的属性:

  • 文字大小(text size),指设备上显示的文字像素高度;
  • 边距(margin),指定视图组件间的距离;
  • 内边距(padding),指定视图外边框与其内容间的距离。

Android使用drawable-ldpi、drawable-mdpi以及drawable-hdpi三个目录下的图像文件自动适配不同像素密度的屏幕。
Android提供了密度无关的尺寸单位(density-independent dimension units),以使边距在不同屏幕密度的设备上获得同样大小的尺寸。

  • dp:density-independent pixel,密度无关像素。在设置边距、内边距或任
    何不打算按像素值指定尺寸的情况下,通常都使用dp这种单位。1dp单位在设备屏幕上总是等于1/160英寸。
  • sp:scale-independent pixel,缩放无关像素。设置屏幕上的字体大小。

Android开发设计原则

用16dp单位值设定边距尺寸。该单位值的设定遵循了Android的“48dp调和”设计原则。

布局参数

名称不以layout_开头的属性作用于组件。组件生成时,会调用某个方法按照属性及属性值进行自我配置。比如padding告诉组件:在绘制组件自身时,要比所含内容大多少。
名称以layout_开头的属性则作用于组件的父组件。我们将这些属性统称为布局参数。它们会告知父布局如何在内部安排自己的子元素。比如边距属性决定了组件间的距离。

layout_weight属性的工作原理

对于水平布局,其子组件width设置为0dp,宽度按weight等比分配。习惯weight值加起来等于1.0或100。


整理笔记时参考了如下资料:

  • 《Android编程权威指南》Bill Phillips Brian Hardy著,王明发 译。人民邮电第1版。
    英文版书名《Android Programming - The Big Nerd Ranch Guide》

知识共享许可协议
li2的博客WeiYi.Li 创作,采用 知识共享 署名-非商业性使用 4.0 国际 许可协议进行许可。
© 2011-2017. All rights reserved by WeiYi.Li. Powerd by Jekyll & LinAnYa's Theme