如何使用 android:layout_width="wrap_content" 获取视图的宽度(以像素为单位)?

发布于 2024-09-14 20:48:58 字数 110 浏览 8 评论 0 原文

我有视图,其中有layout_width =“wrap_content”。如果我在代码中使用 view.getWidth() ,它会返回 0。:-( 如何将视图“wrap_content”的宽度转换为像素?

I have view, which have layout_width="wrap_content". If i use view.getWidth() in code, it returns 0. :-(
How can I convert width of view "wrap_content" to pixels?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

烟雨扶苏 2024-09-21 20:48:58

您可以尝试使用 getMeasuredWidth 来代替。但如果它返回 0,则意味着当您尝试测量视图时视图尚未准备好。尝试稍后再拨。就像在 onCreate 完成时发布的线程中一样

You could try getMeasuredWidth instead. but if it returns 0, that means the View is not ready when you try to measure it. try to make the call later. Like in a thread you poste when onCreate is finished

世界等同你 2024-09-21 20:48:58

这取决于您何时调用 view.getWidth() 。如果视图不可见 [onCreate , onResume] ,结果将始终为 0 。

尝试调用 view.getWidth

 @Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    // call get width here

}

希望这会有所帮助。

it depends when are you calling view.getWidth() .The result will always be 0 if the view is not visible [onCreate , onResume] .

Try to call view.getWidth in

 @Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    // call get width here

}

Hope this will help .

愚人国度 2024-09-21 20:48:58
Button b = (Button) yourView.findViewById(R.id.your_button_id);
System.out.println("b.getMeasuredHeight() = "+b.getMeasuredHeight());
System.out.println("b.getMeasuredWidth() + "+ b.getMeasuredWidth());
Button b = (Button) yourView.findViewById(R.id.your_button_id);
System.out.println("b.getMeasuredHeight() = "+b.getMeasuredHeight());
System.out.println("b.getMeasuredWidth() + "+ b.getMeasuredWidth());
装纯掩盖桑 2024-09-21 20:48:58
  • 在view.post()中调用
  • view.getWidth 在view.getViewTreeObserver()中调用view.getWidth。addGlobalLayoutListener()

记住不要在onCreate()中直接调用view.getWidth(),因为测量过程还没有执行,你可以在getWidth()返回的值只能是0。

  • call view.getWidth in view.post()
  • call view.getWidth in view.getViewTreeObserver().addGlobalLayoutListener()

Remember do not call view.getWidth() directly in onCreate(), cause the measuring process is not performed yet, where you can only get 0 returned by getWidth().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文