无法在Android上获取视图的正确位置

时间:2014-02-22 06:36:09

标签: android

我正在尝试使用textViewgetX()函数获取getY()的位置。

从下面的代码可以看出,textView.getX()方法中使用的textView.getY()onCreate()会返回值0.0

textView.getX()中使用的textView.getY()checkCoord会为32.0getX函数返回getY

我无法理解getX()getY()的值的这种变化。请帮助。代码如下所示:

public class MainActivity extends Activity {
        TextView textView;
        Button bt;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);

                   textView = (TextView) findViewById(R.id.textView1);

                   bt = (Button) findViewById(R.id.button1);

                   System.out.println("Inside onCreate textView X : " + textView.getX());
                   System.out.println("Inside onCreate textView Y : " + textView.getY());

                   bt.setOnClickListener(new View.OnClickListener() {

                   @Override
                   public void onClick(View v) {
                   // TODO Auto-generated method stub
                   checkCoord(v);

                   }
                   });

       }

       @Override
       public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
       }

       public void checkCoord(View view) {

            System.out.println("Inside checkCoord textView X : " + textView.getX());
            System.out.println("Inside checkCoord textView Y : " + textView.getY());

       }

}

1 个答案:

答案 0 :(得分:1)

差异与活动的生命周期有关,请参见此处:

http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

基本上在onCreate中你的视图实际上还没有在屏幕上绘制,所以没有值可以返回。但是当你通过onClickListener调用方法时,视图已被绘制,因此有值要返回