AS不能拖出满意的布局效果

整理旧笔记


实现如下布局:

Eclipse拖出来的布局

要求:
1、不用weight控制;
2、不写死大小;
3、只能一个ViewGoup套3个子View,不能多东西。

这是个典型的TitleBar布局,实现起来很简单,在Eclipse里面几下就拖出来了,但是换到AS里面,却怎么都拖不出来,只能手写代码实现。

AS拖出来的布局1
AS拖出来的布局2

其实并不是AS比Eclipse差,而是出了新属性之后,AS默认用了新属性,而新旧属性存在一些差异。

对比Eclipse的代码和AS的代码,重点差异在中间的TextView。
*** “#” 号用于标识差异部分 ***
Eclipse代码:(对应上面第一张图)


AS代码1:(对应上面第二张图)


AS代码2:(对应上面第三张图)


可以看到,AS拖出来的代码里面多了一个新属性:layout_toStartOf / layout_toEndOf 。也正是应为这个多出来的属性,导致怎么都拖不出想要的效果。


解决方法:
1、去掉多出来的属性,回到Eclipse的状态。

不建议,因为新属性出来是有它的用处的,如果去掉,那么可能在某些地方就会出现问题。

2、补齐对应的新属性,保持兼容状态。

如下面的代码,当这两个新属性同时出现时,布局效果就回到了上面第一张图的状态。



Start/End是新加的,是为RTL设计的,用AS写Left/Right时,会建议换用(或者同步写上)Start/End,如果不需要适配RTL,可以忽略AS的提示。此外,涉及Android版本兼容性问题时,请参考下面官方说明。

NOTE:
If your minSdkVersion is less than 17, you should add both the older left/right attributes as well as the new start/right attributes. On older platforms, where RTL is not supported and the start/right attributes are unknown and therefore ignored, you need the older left/right attributes.

你可能感兴趣的:(AS不能拖出满意的布局效果)