Android 获取View高度的几种方法

来源:互联网 发布:法式文胸 知乎 编辑:程序博客网 时间:2024/05/29 09:43
package com.zkl.test;import android.os.Build;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.view.ViewTreeObserver;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    private TextView mTextView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initEvent();    }    private void initView() {        mTextView = (TextView) findViewById(R.id.mTextView);    }    private void initEvent() {        int height = mTextView.getHeight();        Log.d("Debug","oncreat获取高度:"+height);//获取的高度为0 ,所以不能直接去获取高度        mTextView.post(new Runnable() {            @Override            public void run() {                int height = mTextView.getHeight();                Log.d("Debug","post中获取高度:"+height);            }        });        mTextView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {            @Override            public void onGlobalLayout() {                if (Build.VERSION.SDK_INT>=16){                    mTextView.getViewTreeObserver().removeOnGlobalLayoutListener(this);                }else{                    mTextView.getViewTreeObserver().removeGlobalOnLayoutListener(this);                }                int height = mTextView.getHeight();                Log.d("Debug","addOnGlobalLayoutListener中获取高度:"+height);            }        });        mTextView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {            @Override            public boolean onPreDraw() {                int height = mTextView.getHeight();                mTextView.getViewTreeObserver().removeOnPreDrawListener(this);                Log.d("Debug","addOnPreDrawListener中获取高度:"+height);                return false;            }        });        mTextView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {            @Override            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {                mTextView.removeOnLayoutChangeListener(this);                int height = mTextView.getHeight();                Log.d("Debug","addOnLayoutChangeListener中获取高度:"+height);            }        });    }}

0 0
原创粉丝点击