gpt4 book ai didi

java - 在触摸坐标上创建 View ,但给出了错误的 x 和 y

转载 作者:行者123 更新时间:2023-12-02 09:05:24 25 4
gpt4 key购买 nike

在这个项目中,我的目标是,当用户触摸屏幕时,它会提示执行操作,我使用了 QuickAction做 Action 的事情,但是当我使用 onTouch 时,用它的 x 和 y 创建一个 View ,给我错误坐标的 Action View 。

RelativeLayout mine;
QuickAction quickIntent;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mine = (RelativeLayout) LayoutInflater.from(EmptyActivity.this).inflate(R.layout.activity_empty, null, false);
setContentView(mine);


quickIntent = new QuickAction(EmptyActivity.this, QuickAction.HORIZONTAL);
quickIntent.addActionItem(new ActionItem(1, "Star", android.R.drawable.star_on));
quickIntent.addActionItem(new ActionItem(2, "Star", android.R.drawable.star_on));
quickIntent.addActionItem(new ActionItem(3, "Star", android.R.drawable.star_on));

}

@Override
public boolean onTouchEvent(MotionEvent event) {
int x = (int)event.getX();
int y = (int)event.getY();
if(event.getAction() == MotionEvent.ACTION_DOWN){
View v = new View(EmptyActivity.this);
v.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
v.setLayoutParams(new LinearLayout.LayoutParams(5, 5));
v.setX(x);
v.setY(y);
mine.addView(v);
quickIntent.show(v);

return true;
}

return super.onTouchEvent(event);
}

enter image description here

如图所示,但是当我增加 Y 时,效果很好。

v.setY(y-215);

enter image description here

谢谢。

最佳答案

当您触摸“Activity ”窗口时,它会给出 y 值和 actionBar 高度。

所以你必须从 y 中减去 actionBar 高度。

ActiobBar 高度代码

final TypedArray styledAttributes = getBaseContext().getTheme().obtainStyledAttributes(
new int[] { android.R.attr.actionBarSize });
int mActionBarSize = (int) styledAttributes.getDimension(0, 0);
styledAttributes.recycle();

现在你的 y 值将是

y = y-mActionBarSize;

为了更准确,还需要减去TitleBar高度。

关于java - 在触摸坐标上创建 View ,但给出了错误的 x 和 y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59851459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com