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

5

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

4个回答

5
你可以尝试使用getMeasuredWidth代替,但如果返回0,则意味着在尝试测量View时它还没有准备好。请稍后再次调用。比如在onCreate完成后的线程中。

3

视情况而定,当您调用view.getWidth()时,结果将取决于何时进行调用。如果视图不可见[在onCreate、onResume阶段],则结果始终为0。

请尝试在

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

}

希望这能帮到你。

1
Button b = (Button) yourView.findViewById(R.id.your_button_id);
System.out.println("b.getMeasuredHeight() = "+b.getMeasuredHeight());
System.out.println("b.getMeasuredWidth() + "+ b.getMeasuredWidth());

0
  • 在view.post()中调用view.getWidth()
  • 在view.getViewTreeObserver().addGlobalLayoutListener()中调用view.getWidth()

记得不要直接在onCreate()中调用view.getWidth(),因为此时还没有进行测量过程,getWidth()方法只会返回0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接