我正在创建一个应用程序,我真的需要知道正确的屏幕尺寸。实际上我知道怎么做...但是出现了一个问题,因为即使你做requestWindowFeature(Window.FEATURE_NO_TITLE);
,这个:
仍然停留在屏幕上,看起来,它也算作屏幕的一部分,因此“screenWidth”实际上比可用部分更大。
是否有任何方法可以获得可用部分的大小而不是整个屏幕?或者至少得到'滚动的东西'的大小(但是会有问题,有些设备没有显示它们)?
答案 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)
您也可以使用全屏