You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以编程方式获取View的Gravity属性并识别具体值?

如何正确判断View的Gravity属性

你遇到的问题是因为Gravity的数值是位掩码组合值——一个View的gravity通常会同时包含水平和垂直方向的属性(比如Gravity.LEFT | Gravity.TOP),直接用==和单一Gravity常量(如Gravity.LEFT)比较自然会不匹配,那些陌生的大数值就是多个位掩码叠加的结果。

要正确判断Gravity类型,需要用**位运算&**来检查目标值是否包含指定的Gravity常量,具体实现如下:

View editView;
...
int currentGravity = editView.getForegroundGravity();

// 判断水平方向是否为LEFT
if ((currentGravity & Gravity.LEFT) == Gravity.LEFT) {
    mLeftGravityIv.setBackgroundColor(Color.GRAY);
}
// 判断水平方向是否为居中
else if ((currentGravity & Gravity.CENTER_HORIZONTAL) == Gravity.CENTER_HORIZONTAL) {
    mCenterGravityIv.setBackgroundColor(Color.GRAY);
}
// 判断水平方向是否为RIGHT
else if ((currentGravity & Gravity.RIGHT) == Gravity.RIGHT) {
    mRightGravityIv.setBackgroundColor(Color.GRAY);
}

补充说明:

  • 如果需要判断完整的居中(水平+垂直),可以用(currentGravity & Gravity.CENTER) == Gravity.CENTER
  • Gravity常量分为水平方向(LEFT、CENTER_HORIZONTAL、RIGHT)和垂直方向(TOP、CENTER_VERTICAL、BOTTOM),可以根据需求分别判断对应方向的属性

内容的提问来源于stack exchange,提问作者Babushka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 23:55:23