您的位置:首页 > 移动开发 > Android开发

Android 获取View高度的几种方法

2017-04-05 17:13 495 查看
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高度