可以通过给控件注册监听视图树的观察者来获取控件的大小
代码如下
public class MainActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.text);
tv.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//在这里获取到宽高
int width = tv.getMeasuredWidth();
int height = tv.getMeasuredHeight();
}
});
}
}
ViewTreeObserver 是一个注册监听视图树的观察者(observer),在视图树种全局事件改变时得到通知。
而OnGlobalLayoutListener是当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时的回调接口
获取屏幕宽高代码如下
DisplayMetrics dm = getResources().getDisplayMetrics();
int screenWidth = dm.widthPixels;//屏幕宽度
int screenHeight = dm.heightPixels;//屏幕高度
两者都获取到了,就可以进行判断了
可以用
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.widthPixels和metrics.heightPixels就是屏幕大小了