Android 如何在不膨胀视图的情况下获取布局属性?

Android 如何在不膨胀视图的情况下获取布局属性?,android,android-layout,Android,Android Layout,我想获得一些布局尺寸,例如特定项目的边距。有可能直接从资源中获取吗 当然,我可以使用该布局放大视图,然后获取项目并要求其提供值,但这是唯一的选项吗?是的,但我不建议这样做,您可以找到屏幕的尺寸,然后在代码中自己计算尺寸: Display display = this.getActivity().getWindowManager().getDefaultDisplay(); int w = display.getWidth(); int h = display.ge

我想获得一些布局尺寸,例如特定项目的边距。有可能直接从资源中获取吗


当然,我可以使用该布局放大视图,然后获取项目并要求其提供值,但这是唯一的选项吗?

是的,但我不建议这样做,您可以找到屏幕的尺寸,然后在代码中自己计算尺寸:

Display display = this.getActivity().getWindowManager().getDefaultDisplay();
        int w = display.getWidth();
        int h = display.getWidth();
否则,您可以按常规方式进行:

LinearLayout ll = (findViewById) ...
int whatever = ll.getWhatever();

有没有具体的原因让你避免这样做?可能有助于找到解决方案

我正在尝试构建一个,并且随着项目的展开和折叠,维度也会发生变化,因此每次都需要重新计算大小。为了优化这一点,我希望在渲染任何项目之前,从一开始就找到一些维度。当然,我可以推迟到第一个项目出现在屏幕上,然后要求该项目提供一个值,但这看起来有点难看。从资源中获取价值看起来要优雅得多。我很抱歉,据我所知,“传统”方式是唯一的方式,我认为在UI线程负载方面不需要太多,否则您可以创建一个新线程。您的回答没有解释问题,但总的来说这是正确的,因为你建议的方法是唯一可能的。这里是我的解释:布局本身并不是作为真实尺寸的对象存在的,所以我们必须膨胀视图并等待视图被渲染;只有这样,我们才能查询维度。至于获取屏幕尺寸,您的方法将为我们提供全屏尺寸,但有时我们需要可用的视口尺寸;为此,考虑使用Android .View。View。GETWOWOVISIVILISDISPLAY框架()。