如何在自定义Android视图中检查重力标志?
问题
我有一个自定义的Android视图,我希望在其中设置用户设置重力,以便在.这是我使用的简化版本:onDraw
onDraw
// check gravity
if ((mGravity & Gravity.CENTER_VERTICAL) == Gravity.CENTER_VERTICAL) {
// draw the content centered vertically
} else if ((mGravity & Gravity.BOTTOM) == Gravity.BOTTOM) {
// draw the content at the bottom
}
其中 是从 xml 属性中获取的(如下所示)。mGravity
如果我设置重力,它工作正常。但是我惊讶地发现,如果我把它设置为,检查仍然是真的!Gravity.CENTER_VERTICAL
Gravity.BOTTOM
Gravity.CENTER_VERTICAL
为什么会发生这种情况?
我必须查看二进制值才能了解原因:
- 二进制:
,Gravity.CENTER_VERTICAL
:常量值:16 (0x00000010)0001 0000
- 二进制: ,
重力.BOTTOM
: 常量值: 80 (0x00000050)0101 0000
因此,当我这样做时
mGravity = Gravity.BOTTOM;
(mGravity & Gravity.CENTER_VERTICAL) == Gravity.CENTER_VERTICAL
// (0101 & 0001) == 0001
我收到误报。
我该怎么办?
那么我应该如何检查重力标志呢?
我可以做类似的事情,但这样我只会得到一个完全匹配。如果用户将重力设置为类似的东西,那么它将失败。if (mGravity == Gravity.CENTER_VERTICAL)
center_vertical|right