在触摸坐标上创建视图,但是给出了错误的x和y

问题描述 投票:0回答:1

在这个项目中,我打算做的是,当用户触摸屏幕时,它会提示要执行的操作,我已经使用QuickAction来执行操作,但是当我使用onTouch时,创建带有x的视图和y,请以错误的坐标给我显示动作视图。

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

谢谢。

java android touch ontouch
1个回答
0
投票

当您在“活动”窗口上触摸时,它会以高度[给出y值。

所以您必须从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

高度也需要减去。
© www.soinside.com 2019 - 2024. All rights reserved.