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);
}
});
}
}
Android 获取View高度的几种方法
最新推荐文章于 2024-08-12 11:42:49 发布