Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 查找布局的高度和宽度值_Android_Android Studio 3.0 - Fatal编程技术网

Android 查找布局的高度和宽度值

Android 查找布局的高度和宽度值,android,android-studio-3.0,Android,Android Studio 3.0,我正在尝试获取表格布局的高度和宽度,并使用它设置按钮的高度和宽度。我使用以下代码来实现这一点: ViewGroup.LayoutParams params = new TableLayout.LayoutParams(); params.width = params.width/3; params.height = params.width; 但是,代码不起作用,我不确定原因 您使用的是同一个params对象,它也是空的。 您的代码应该是这样的 ViewGroup.LayoutParams b

我正在尝试获取表格布局的高度和宽度,并使用它设置按钮的高度和宽度。我使用以下代码来实现这一点:

ViewGroup.LayoutParams params = new TableLayout.LayoutParams();
params.width = params.width/3;
params.height = params.width;

但是,代码不起作用,我不确定原因

您使用的是同一个params对象,它也是空的。 您的代码应该是这样的

ViewGroup.LayoutParams btnParams = btn.getLayoutParams();

ViewGroup.LayoutParams params = tableLayout.getLayoutParams();
btnParams.width = params.width/3;
btnParams.height = params.width;
btn.setLayoutParams(btnParams)

您使用的是同样的params对象,它也是空的。 您的代码应该是这样的

ViewGroup.LayoutParams btnParams = btn.getLayoutParams();

ViewGroup.LayoutParams params = tableLayout.getLayoutParams();
btnParams.width = params.width/3;
btnParams.height = params.width;
btn.setLayoutParams(btnParams)
在活动中执行onCreate时,UI尚未绘制到屏幕上,因此没有任何维度,因为它们尚未在屏幕上显示。 调用setContentView时,会将一条消息发布到UI线程,以绘制布局的UI,但在onCreate完成执行后将在将来发生。 向UI线程发布Runnable将把Runnable放在UI线程消息队列的末尾,因此将在绘制屏幕后执行,因此所有内容都有维度。这就是为什么你从Niza Siwale答案中得到一个空点例外

希望它能起作用。

在活动中执行onCreate时,UI尚未绘制到屏幕上,因此没有任何尺寸标注,因为它们尚未在屏幕上显示。 调用setContentView时,会将一条消息发布到UI线程,以绘制布局的UI,但在onCreate完成执行后将在将来发生。 向UI线程发布Runnable将把Runnable放在UI线程消息队列的末尾,因此将在绘制屏幕后执行,因此所有内容都有维度。这就是为什么你从Niza Siwale答案中得到一个空点例外



希望它能起作用。

您是否面临任何错误或异常?答案可能在这里?是否将参数设置为视图?与view.setLayoutParamsparams一样,您也没有在布局参数中定义宽度和高度参数,因此它将是0/3和0您是否面临任何错误或异常?答案可能在这里?是否将参数设置为视图?与view.setLayoutParamsparams类似,您也没有在布局参数中定义宽度和高度参数,因此当我这样做时,它将是0/3和0,我的应用程序崩溃,我收到以下错误消息:java.lang.NullPointerException:尝试写入空对象引用上的字段“int android.view.ViewGroup$LayoutParams.width”tableLayout是否已初始化?i、 它是否有具有上下文的父级?我在activity_main.xml文件中设置了我的表视图,因此我认为它已初始化。您的按钮如何?我的按钮设置为button b=new button此;当我这样做时,我的应用程序崩溃,我收到以下错误消息:java.lang.NullPointerException:尝试写入空对象引用上的字段“int android.view.ViewGroup$LayoutParams.width”tableLayout是否已初始化?i、 它是否有具有上下文的父级?我在activity_main.xml文件中设置了我的表视图,因此我认为它已初始化。您的按钮如何?我的按钮设置为button b=new button此;什么是Runnable以及如何使用它?在onCreate方法button btn=findViewByIdR.id.btnId中初始化按钮后,您可以使用我在onCreate方法中发布的代码。正如我在解释中提到的,Runnable用于分隔代码。这样,您就可以确保只有在绘制屏幕后才能获得宽度和高度。否则,您总是试图获取空对象的维度,因为它尚未初始化。谢谢,这非常有效!什么是Runnable以及如何使用它?在onCreate方法button btn=findViewByIdR.id.btnId中初始化按钮后,您可以使用我在onCreate方法中发布的代码。正如我在解释中提到的,Runnable用于分隔代码。这样,您就可以确保只有在绘制屏幕后才能获得宽度和高度。否则,您总是试图获取空对象的维度,因为它尚未初始化。谢谢,这非常有效!