如何在android中获取按钮的坐标?

时间:2014-03-25 07:05:54

标签: android button coordinates

我想在我的应用程序中获取按钮的坐标位置。我使用了以下方法。但它无法正常工作。请帮助。

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();
 }
           });

4 个答案:

答案 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();