Android面试题一

android:padding和android:layout_margin的异同

android:padding

padding 为内边框,指该控件内部内容,如文本/图片距离该控件的边距。

padding约束的是控件或布局显示的内容距离边框的距离,沿垂直边框向内压缩,padding越大,内容显示控件越小。

例如,一个元素的width为100px,该元素的左右padding设为10px,则元素内容的宽度便是100-10-10=80px。

android:layout_margin

Margin 为外边框,指该控件距离边父控件的边距。

margin这是沿垂直边框向外延伸的距离,它的意思就是给控件加了一个一定距离的空白边,显示效果只与值大小正负相关,与其他元素边界无关。

差异

padding值的范围[0,任意正数](默认为0),而margin的值则有正有负。

想理解负值,首先要理解0值,当margin=“0dip”时,控件外延扩展的边为0,也就是边界挨着其它边缘;

margin>0,是给控件添加白边,让其外延变大,过大时会影响到整个控件显示大小;

margin<0,一般用于单一方向显示,也就是将该控件与其相邻控件的距离是负值,从显示效果讲就是覆盖某一方向上其它控件。

总言之,这两个属性是某个控件的属性,控制的只是该控件的显示,表示的意义也不牵扯父控件或其它相邻控件,所以理解时要注意,不要混淆。

参考资料

http://www.th7.cn/Program/Android/201405/196073.shtml

setFocusable、setEnabled、setClickable区别

setEnabled(boolean bool)

用法:设置当前控件是否被激活,是否可用。

bool为true时,表明该控件被激活,控件处于”活动状态“,能够响应或触发各种事件了,比如触摸、点击、按键等;

bool为 false 时,则表明该控件没有被激活,控件永远不会”活动“,不管为他设置什么UI 属性,都无效果;

相关:setEnabled(boolean bool)就相当于View控件的事件总开关,只有总开关打开了,才能使用其他事件。

setClickable(boolean bool)

用法:设置当前控件是否可被点击。

bool为true时,表明控件可以被点击,触发点击事件;

bool为false时,则表明控件不可被点击,无法触发任何类型的点击事件。

相关:A.“点击事件”的类型,适用于鼠标、键盘按键、遥控器等;

B.setOnClickListener()方法会默认把控件的setClickable()设置为 true。

setFocusable(boolean bool)

用法:设置当前控件是否 “可以” 获得焦点。

bool为true时,表明该控件”可以”获得焦点;

bool为false时,则表明控件不可以获得焦点。

相关:A.”可以”获得焦点,就是说具备获得焦点的机会、能力,当有焦点在控件之间移动时,控件就有这个机会、能力得到焦点。但并不是使当前控件立刻获得焦点,要想当前控件立刻获得焦点,需要用View.requestFocus()方法;

​ B.当设备为可触摸操作的设备(如手机,平板等)时,setFocusable(boolean bool)方法和setClickable(boolean bool)方法的事件触发,并无直接关联,有无焦点并不影响是否可点击;

​ C.而当设备为jin不可触摸操作的设备(如智能电视,VR等需要遥控器/手柄操作)时,有无焦点就直接影响点击事件的定位了,需明确。

参考资料

http://blog.csdn.net/mlq8087/article/details/53424142