有的时候需要在 整个屏幕中 居中显示textView,而此时的textView的最外层还有几个控件,导致设置xml无法居中显示(只有除了其他控件外的地方,以此居中),所以需要动态获取此时的高度,在渲染完成后获取。
private void getLocation() {
<span style="white-space:pre"> </span>//监听textView外的控件
listView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
listHeight = listView.getMeasuredHeight();//获取 该控件高度
listView.getViewTreeObserver().removeGlobalOnLayoutListener(this);//关闭监听,否则程序会崩溃,不断监听
getListViewHeight(listHeight);
}
});
}
private void getListViewHeight(int height) {
DisplayMetrics dm = getResources().getDisplayMetrics();
int xheight = dm.heightPixels;//获取总屏幕高度
int x;
x = xheight / 2 - (xheight - height);//获取textView 距离 外层控件的 距离,此距离是 相当于总屏幕的中间,距离上边控件的距离
RelativeLayout.LayoutParams p1 = (android.widget.RelativeLayout.LayoutParams) error_text.getLayoutParams();
p1.topMargin = x;//设置像素
p1.addRule(RelativeLayout.CENTER_HORIZONTAL);//设置 水平居中
textView.setLayoutParams(p1);
}