出现这种情况可能是在刚启动程序,程序刚开始绘制 view 的时候,你马上使用代码去捕获上面的值。这个时候,由于view 是刚开始绘制的,你得到的就会是 0.
02-22 22:55:46.465 9864-9883/com.viewposition E/--: left:0 top:0 right:0 bottom:0
public class MainActivity extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(5000); Log.e("--","left:"+tv.getLeft()+" top:"+tv.getTop()+" right:"+tv.getRight()+" bottom:"+tv.getBottom()); Log.e("--","tsx:"+tv.getTranslationX()+"tsy:"+tv.getTranslationY()); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); } }这样就有值了
02-22 22:55:46.465 9864-9883/com.viewposition E/--: left:0 top:0 right:113 bottom:29