我使用以下方法获取我的按钮的x和y值。它总是返回0。可能是什么问题?
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();
}
});
我使用此方法将值传递给另一个活动
Intent i = new Intent(getApplicationContext(), CustomDialogExample.class);
i.putExtra("value",popup_height);
startActivity(i);
此方法检索值
Intent i = getIntent();
int intValue = i.getIntExtra("value", 0);
最后这个设置我的弹出位置
Window window = customizeDialog.getWindow();
WindowManager.LayoutParams wlp = window.getAttributes();
wlp.y =intValue;
window.setAttributes(wlp);
变量intValue总是返回0
答案 0 :(得分:2)
您将'measuring'放在onWindowFocusChanged() - 方法中。 正如文档所述:
这是该活动是否对用户可见的最佳指标。
您也可以将它放在onResume()中,这是应用程序完全在屏幕上并且处于活动状态之前的最后一步,但是:
请记住,onResume不是您的活动对用户可见的最佳指标;诸如键盘锁之类的系统窗口可以在前面。使用onWindowFocusChanged(boolean)可以确定您的活动对用户可见(例如,恢复游戏)。
如果窗口/视图尚未显示,则无法保证其测量结果,因此以前的方法会更好。
答案 1 :(得分:2)
使用此功能。
btn_show.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouchEvent(MotionEvent event) {
int x = (int)event.getX();
int y = (int)event.getY();
Toast.makeText(getApplicationContext(), "button x is......"+x,Toast.LENGTH_SHORT ).show();
Toast.makeText(getApplicationContext(), "button y is......"+y,Toast.LENGTH_SHORT ).show();
return false;
}
});
答案 2 :(得分:0)
你能先尝试这样做吗
Log.d("Button","Button description :"+btn_show.toString());
答案 3 :(得分:0)
尝试打印getX()和getY()返回的浮点值。问题可能在于整数转换。我尝试了你的代码,它和我一起工作正常。检查你的布局。