view.post(Runnable)

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView = (TextView) findViewById(R.id.my_text);
        // 下面這一行log打印的是0,0
        Log.d("test", "mTextView width : " + mTextView.getMeasuredWidth() + " - height : " + mTextView.getMeasuredHeight());
        mTextView.post(new Runnable() {
 
            @Override
            public void run() {
                // 下面這一行log打印的是TextView測量後的寬高
                Log.d("test", "mTextView width : " + mTextView.getMeasuredWidth() + " - height : " + mTextView.getMeasuredHeight());
            }
        });
    }

view.post會把runnable插入到主線程messagequeue中,等performTraversals執行完畢後就可以獲取view的measuredewidth了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章