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

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);
        }
}

希望它有用。