我想在我的应用程序中获取按钮的坐标位置。我使用了以下方法。但它无法正常工作。请帮助。
public Point currentPosition(View view)
{
int[] loc = new int[2];
view.getLocationOnScreen(loc);
int x = loc[0];
int y=loc[1];
Toast.makeText(getApplicationContext(),"coordinate is"+x+","+y,Toast.LENGTH_SHORT).show();
return new Point(loc[0], loc[1]);
}
我也用过这个
btn_show.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
int x = (int)btn_show.getX();
int y= (int)btn_show.getY();
Toast.makeText(getApplicationContext(), "button x is......"+x,Toast.LENGTH_SHORT ).show();
Toast.makeText(getApplicationContext(), "button y is......"+y,Toast.LENGTH_SHORT ).show();
}
});
答案 0 :(得分:0)
您使用的方法期望整数值作为R.string.whatever的引用。将getTop()返回值转换为String应该可以工作。
Toast.makeText(MainActivity.this, String.valueOf(button1.getTop()), Toast.LENGTH_LONG).show();
获取按钮的x / y(自API 11起):
Toast.makeText(MainActivity.this, (int)button1.getX() + ":" + (int)button1.getY(), Toast.LENGTH_LONG).show();
文档:
此视图的可视x位置(以像素为单位)。
对于低于11的API,你的方法是正确的:getTop()相当于getY()但没有可能的动画/翻译。 getLeft()是具有相同限制的getX()的等价物。
或
您可以使用View.getTop(),View.getBottom(),View.getLeft()和View.getRight()。这些将返回View相对于父级的顶部,底部,左侧和右侧边缘的位置。
或使用
View.getLocationOnScreen()
和/或
getLocationInWindow().
如果您使用的是onTouch lister,请使用此功能。 onTouch方法的代码:
float screenX = v.getLeft() + event.getX(); // X in Screen Coordinates
float screenY = v.getTop() + event.getY(); // Y in Screen Coordinates
答案 1 :(得分:0)
您必须等到View
被测量,否则它将始终返回0.使用OnGlobalLayoutListener
:
view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
public void onGlobalLayout() {
int x = view.getLeft();
int y = view.getTop();
}
});
答案 2 :(得分:0)
有很多方法可以获取协调员职位。 如果要将居中的浮动按钮(如带有导游库的教程)居中。
我建议创建此方法
public Rect getRectFromAView(View view){
Rect rect=new Rect(); // create a new rect
view.getGlobalRect(rect);// draw the rect
return rect;
}
如果我想获取x或y的坐标位置
Rect rect=getREctFromAView(view);
rect.exactCenterX(); //Return the position X
rect.exactCenterY(); //Return the position Y
当我尝试获取视图的中心位置时就是这种情况。
答案 3 :(得分:-1)
尝试: -
float x = button.getX();
float y = button.getY();