|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
以后一定会坚持多读些相关的书籍,在这里也要感谢一下“清源教育”的老师对我学习中极大的帮助,每次有不懂得问题,都及时得到了他们的回答。比来我的同事碰到了一个很风趣的成绩。上面这个十分复杂的结构会向我们展现一些关于Android丈量体系的风趣发明。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0F0"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Thisissometext."/>
</FrameLayout>
预期的运转了局,应当显现带色彩背景的文本。但实践上,你基本就看不到背景ImageView:
<br>
成绩的本源就在于丈量。由于我们利用了色彩来取代了图片,以是ImageView很天然地以为它的宽和高都是零。Colors(大概ColorDrawables)并没有像图片那样具有本色意义上的巨细,而ImageView不会年夜于它的背景大概图片源的巨细。
成心思的是,我们能够想出良多办法来办理这个成绩。每一个办理办法都展现了丈量体系的某个新的方面。从直不雅的角度顺次懂得:
- 将父结构FrameLayout设置为match_parent。如许,ImageView就能够晓得详细的巨细,以此充斥父视图。
- 利用View取代ImageView。View会扩大并添补空间,而ImageView不会。
- 利用RelativeLayout取代FrameLayout。绝对结构在丈量子视图巨细时,会接纳分歧的体例。
- 为TextView宽或高设置为match_parent。这是个很让人狐疑的办法。它之以是无效,是由于假如FrameLayout有一个或多个子视图利用了match_parent,会再做一次丈量。
了解而不是复杂地办理这个成绩,必要重复浏览FrameLayout.onMeasure()和ImageView.onMeasure()代码。面临如许的成绩,Android是开源项目这一现实让我感应十分乐意。
这个成绩的中心在于,仅仅展现色彩不该该利用ImageView,用一个带背景的View会加倍牢靠。
很明显,下面的结构没有甚么本色意义,人人一样平常城市给TextView设置背景。不外,这是一种申明成绩的复杂体例。
语法弄明白@interface@property这些工具总要知道是干嘛的怎么用基础库 |
|