android - 在 onStart() 中获取 fragment 宽度 0

标签 android android-layout android-fragments

我们正在使用 fragment 兼容性库,并试图获取 fragment 的宽度,添加到 FrameLayout。根据 fragment 生命周期,在执行 onCreateView 之前,getView().getMeasuredWidth() 应该返回 0。但是,我们在 onCreateView 之后的 onStart() 中得到 0,因此返回值不应该为 0。

这是我们想知道其宽度的 fragment :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<FrameLayout android:id="@+id/details" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:background="@drawable/carbon_fiber"/>

为什么会出现这种异常现象?任何帮助将不胜感激。

最佳答案

与 Activity 类似, View 层次结构中的 View 未在 Fragment::onStart() 中测量。要获取 View 的大小,您需要创建一个 OnGlobalLayoutListener 并按以下方式使用它:

Android get Fragment width

关于android - 在 onStart() 中获取 fragment 宽度 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9860217/

相关文章:

java - 在 Android 运行时请求位置权限

java - 音乐播放器的实现

android - 如何为可移动图像创建裁剪层

android - 切换 fragment 时如何保持 subview 的状态?

android - 从子类 SimpleCursorAdapter 启动 AlertDialog

java - 如何使用 Recorder 检测 android 中的环境噪声

java - 获取 Android 用户的个人电话号码的万无一失的方法?

android - 更改工具栏中标题的颜色和大小 - Android

java - 在 android 上为 fragment 实现 OnClickListener

android - 具有 viewpager 性能问题的导航组件