状态栏打开后,是否可以知道活动的可见高度?
我想知道屏幕的可见高度。
答案 0 :(得分:4)
尝试查看treeobserver方法.. 喜欢:
main_layout.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout()
{
Rect r = new Rect();
// r will be populated with the coordinates of your view
// that area still visible.
main_layout.getWindowVisibleDisplayFrame(r);
int heightDiff = main_layout.getRootView().getHeight()-(r.bottom -r.top);
}
});
将main_layout替换为您想要的View对象。 希望它可以提供帮助。
答案 1 :(得分:-1)
myLayout.getHeight();只有在它显示在屏幕之前它才会返回视图的实际可见高度,之前它只会是0。 如果你真的有兴趣了解myLayout.getHeight(),那么你可能想在屏幕上显示视图后进行检查
如果您想知道屏幕的高度/宽度,那么您可以考虑使用以下代码: DisplayMetrics dm = new DisplayMetrics(); getWindowManager()getDefaultDisplay()getMetrics(DM);
final int height = dm.heightPixels; final int width = dm.widthPixels;
答案 2 :(得分:-1)
希望这行代码适合您。当我想要屏幕的高度n宽度时,我会使用它
// get screen width/height
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics); height =
metrics.heightPixels; width = metrics.widthPixels;
答案 3 :(得分:-2)
为您的主要布局元素添加ID:
<LinearLayout id="myLayout">
...
</LinearLayout>
然后在setContentView()
之后得到它的高度:
View myLayout = (View) findViewById(R.id.myLayout);
int height = myLayout.getHeight();
另请参阅this question了解详情。