如何在Android中获得USABLE屏幕宽度和高度

时间:2014-06-03 14:26:07

标签: java android screen

我正在创建一个应用程序,我真的需要知道正确的屏幕尺寸。实际上我知道怎么做...但是出现了一个问题,因为即使你做requestWindowFeature(Window.FEATURE_NO_TITLE);,这个:enter image description here

仍然停留在屏幕上,看起来,它也算作屏幕的一部分,因此“screenWidth”实际上比可用部分更大。

是否有任何方法可以获得可用部分的大小而不是整个屏幕?或者至少得到'滚动的东西'的大小(但是会有问题,有些设备没有显示它们)?

3 个答案:

答案 0 :(得分:5)

我前面有同样的问题,这是我找到的答案。显示活动维度。

import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;
import android.graphics.Point;

public class MainActivity extends Activity
{
    @Override
    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        setContentView(R.layout.main)

        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);

        int width = size.x;
        int height = size.y;

        //Set two textViews to display the width and height
        //ex: txtWidth.setText("X: " + width);
    }
}

答案 1 :(得分:2)

我知道这个问题确实很老,但是我已经为此苦苦挣扎了很多次,直到找到这个愚蠢的简单解决方案为止:

public final void updateUsableScreenSize() {
    final View vContent = findViewById(android.R.id.content);
    vContent.post(new Runnable() {
        @Override
        public void run() {
            nMaxScreenWidth = vContent.getWidth();
            nMaxScreenHeight = vContent.getHeight();
        }
    });
}

在Activity的onCreate()中的setContentView()之后运行此代码,并将依赖于这些值的任何代码延迟到onCreate()完成之前,例如,在此步骤之后再次使用post()。

说明:此代码获取您活动的根视图,该资源始终可通过通用资源ID android.R.id.content进行访问,并要求UI处理程序在完成初始布局后将其作为下一条消息运行。您的根视图将具有可用的确切大小。您无法直接在onCreate()回调上运行此代码,因为尚未发生布局。

答案 2 :(得分:1)

您也可以使用全屏

developer.android