确定Android屏幕大小和设置视图';s相应的大小

确定Android屏幕大小和设置视图';s相应的大小,android,android-layout,layoutparams,Android,Android Layout,Layoutparams,是的,我知道这个问题以前被问过几十次。但是,在实施多个解决方案时,my app force将关闭。我尝试过通过点击按钮来实现: //Determine Screen Size and Create Layout Param android.view.Display display = ((android.view.WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); int

是的,我知道这个问题以前被问过几十次。但是,在实施多个解决方案时,my app force将关闭。我尝试过通过点击按钮来实现:

    //Determine Screen Size and Create Layout Param
    android.view.Display display = ((android.view.WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    int BtnWth = display.getWidth() / 4;
    int BtnHgt = display.getHeight() / 4;
    RelativeLayout.LayoutParams BtnDim = new RelativeLayout.LayoutParams(BtnWth, BtnHgt);

    // Declare MPC pads
    Button pad1 = (Button) findViewById(R.id.pad1);

public void onClick(){

    // Set width and height of each pad
    pad1.setLayoutParams(BtnDim);
}

还可以使用onDraw()方法。这两种方法都可以在真正的Android 3.1设备上强制关闭。

请尝试以下代码,以获取屏幕宽度和高度(以像素为单位):

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
int screenHeight = dm.heightPixels;
确保将其添加到导入中:

import android.util.DisplayMetrics;

请尝试以下代码以获取屏幕宽度和高度(以像素为单位):

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
int screenHeight = dm.heightPixels;
确保将其添加到导入中:

import android.util.DisplayMetrics;

代码中不清楚,但您似乎在函数范围外初始化值。这可能发生在服务未准备好的地方,或者最有可能发生在布局未加载的地方,这反过来可能返回空值(例如pad1)。这种行为会引发一场暴力冲突。您是否尝试过从方法(可能是onCreate)加载值?此外,您还可以尝试捕获代码,并在跟踪通道上输出异常详细信息,以便更好地了解导致FC的原因。是的,我在onCreate()中尝试了它,我听说它可能会导致尚未加载值,因此我在onDraw()中尝试了它,在onDraw()中它也强制关闭。我将尝试抛出并捕获异常。好的,我在Android中从未抛出过异常。我该如何显示结果呢?您可能会这样做(很抱歉,似乎无法在注释中输入新行):
尝试{/*您的代码*/}catch(异常e){/*log e.toString()*/}
您可以在这里看到一个示例:我尝试过做log.e(getLocalClassName(),“无法设置维度”,e);但是我在Logcat中没有看到来自这个try-catch块的任何异常。从代码中看不清楚,但似乎您正在初始化函数范围之外的值。这可能发生在服务未准备好的地方,或者最有可能发生在布局未加载的地方,这反过来可能返回空值(例如pad1)。这种行为会引发一场暴力冲突。您是否尝试过从方法(可能是onCreate)加载值?此外,您还可以尝试捕获代码,并在跟踪通道上输出异常详细信息,以便更好地了解导致FC的原因。是的,我在onCreate()中尝试了它,我听说它可能会导致尚未加载值,因此我在onDraw()中尝试了它,在onDraw()中它也强制关闭。我将尝试抛出并捕获异常。好的,我在Android中从未抛出过异常。我该如何显示结果呢?您可能会这样做(很抱歉,似乎无法在注释中输入新行):
尝试{/*您的代码*/}catch(异常e){/*log e.toString()*/}
您可以在这里看到一个示例:我尝试过做log.e(getLocalClassName(),“无法设置维度”,e);但是我在Logcat中没有看到来自这个try-catch块的任何异常。这仍然会产生一个强制关闭。我猜你得到一个强制关闭的原因与代码本身不同。调查与adb接近的力。它将打印出一个堆栈跟踪,精确地说明出错的原因以及在代码中包含行号的原因。有关如何使用adb的信息,请参阅。您将希望使用如下命令查看logcat:adb-slogcat-v timeIt这是我的XML文件中的一个印刷错误,我在layout_width中漏掉了“d”。感谢亚洲开发银行的提示,这将在未来证明是有用的。谢谢你的帮助。这仍然会产生一个强制关闭。我猜你得到一个强制关闭的原因与代码本身不同。调查与adb接近的力。它将打印出一个堆栈跟踪,精确地说明出错的原因以及在代码中包含行号的原因。有关如何使用adb的信息,请参阅。您将希望使用如下命令查看logcat:adb-slogcat-v timeIt这是我的XML文件中的一个印刷错误,我在layout_width中漏掉了“d”。感谢亚洲开发银行的提示,这将在未来证明是有用的。谢谢你的帮助。