说几个常见的问题,这些问题一般都是由逻辑问题引起,google工程师这样设计布局模式,是有逻辑上的道理的。
错误一,
这个错误,发生在相对布局模式中,
在相对布局模式中,我们喜欢用同时使用android:layout_below和android:layout_above两个属性,
前者是表示我在某某的上面,后者表示我在某某的上面,
如果存在对象A和对象B,假设对象A在对象B的上面,
肯定对象B一定在对象A的下面,
如果我们再定义一次,对象B在对象A的下面,那么,从逻辑上讲,是多此一举。
疑惑二,
google工程师设计这麽多的模式,不是没有道理的,就是要让设计人员根据需求找到最优和最方便的布局模式,
至于能不能居右,我想说是能做到的,可以设置Layout的重心居右(android:gravity="right"),
这样也能是线性模式中的对象居右。
但我建议是,凡是涉及到有相对的居右居左或者居底居顶的对象,优先采用相对布局。
错误三,
这个错误,我以前也经常犯,在线性模式中,我会使用android:layout_alignParentRight属性
虽然不会报错,但这个属性在线性模式中,也不起作用。
疑惑三,
搞不清楚带layout和不带layout的关系
记住一点,凡是带layout字样的对是来描写对象与对象之间的关系的,不是对象内部的关系。
疑惑四,
在动态给组件设置布局参数的时候,getLayoutParams返回null,这有是个逻辑问题,如果组件是我们动态构建的,并且没有初始化任何LayoutParams参数,这个对象当然为null,这时我们需要主动创建这个对象。
五,慎用android:layout_below和android:layout_above
假设有个这样的场景,LayoutA和LayoutB,两个容器,A在B的上面,而B又靠近父容器的底部android:layout_alignParentBottom="true",如果把android:layout_above=B用在A上面,那么A的底部永远挨着B的顶部,而不管A容器里是否有组件。
浙公网安备 33010602011771号