查找布局的高度和宽度的值
Finding the Value of a Layout's Height and Width
我正在尝试获取 table 布局的高度和宽度,并使用它来设置我的按钮的高度和宽度。我使用以下代码来实现此目的:
ViewGroup.LayoutParams params = new TableLayout.LayoutParams();
params.width = params.width/3;
params.height = params.width;
但是代码不起作用,我不确定原因。
您正在使用同样为空的相同参数对象。
你的代码应该是这样的
ViewGroup.LayoutParams btnParams = btn.getLayoutParams();
ViewGroup.LayoutParams params = tableLayout.getLayoutParams();
btnParams.width = params.width/3;
btnParams.height = params.width;
btn.setLayoutParams(btnParams)
当 onCreate
在你的 Activity
中执行时,UI
还没有被绘制到屏幕上,所以还没有尺寸,因为它们还没有被布置在屏幕。
调用 setContentView
时,会向 UI
线程发送一条消息,为您的布局绘制 UI
,但会在 onCreate 完成执行后发生。
将 Runnable
发送到 UI
线程会将 Runnable
放在 UI
线程的消息队列的末尾,因此将在绘制屏幕后执行,因此一切都有维度。 (这就是为什么您从 Niza Siwale
答案中得到 NullPointerException 的原因)
btn.post(new Runnable() {
@Override
public void run() {
TableLayout myTableLayout = findViewById(R.id.idOfTheTableLayout);
int width = myTableLayout.getWidth();
int height = myTableLaout.getHeight();
ViewGroup.LayoutParams params = btn.getLayoutParams();
params.height = height;
params.width = width;
btn.setLayoutParams(params);
}
}
希望它有用。
我正在尝试获取 table 布局的高度和宽度,并使用它来设置我的按钮的高度和宽度。我使用以下代码来实现此目的:
ViewGroup.LayoutParams params = new TableLayout.LayoutParams();
params.width = params.width/3;
params.height = params.width;
但是代码不起作用,我不确定原因。
您正在使用同样为空的相同参数对象。 你的代码应该是这样的
ViewGroup.LayoutParams btnParams = btn.getLayoutParams();
ViewGroup.LayoutParams params = tableLayout.getLayoutParams();
btnParams.width = params.width/3;
btnParams.height = params.width;
btn.setLayoutParams(btnParams)
当 onCreate
在你的 Activity
中执行时,UI
还没有被绘制到屏幕上,所以还没有尺寸,因为它们还没有被布置在屏幕。
调用 setContentView
时,会向 UI
线程发送一条消息,为您的布局绘制 UI
,但会在 onCreate 完成执行后发生。
将 Runnable
发送到 UI
线程会将 Runnable
放在 UI
线程的消息队列的末尾,因此将在绘制屏幕后执行,因此一切都有维度。 (这就是为什么您从 Niza Siwale
答案中得到 NullPointerException 的原因)
btn.post(new Runnable() {
@Override
public void run() {
TableLayout myTableLayout = findViewById(R.id.idOfTheTableLayout);
int width = myTableLayout.getWidth();
int height = myTableLaout.getHeight();
ViewGroup.LayoutParams params = btn.getLayoutParams();
params.height = height;
params.width = width;
btn.setLayoutParams(params);
}
}
希望它有用。