- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Firebase 崩溃报告显示以下代码在极少数设备上出现故障。我无法重现这个问题。谁能建议可能是什么问题?看来问题是 imageView.getWidth() 或 imageView.getHeight() 返回零。
以下代码在我的 fragment 中:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_category_list, container, false);
final ImageView imageView = (ImageView) view.findViewById(R.id.categoryBackgrndImageView);
// Set an observer that is called after the imageView is laid out
imageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//now we can retrieve the width and height
int width = imageView.getWidth();
int height = imageView.getHeight();
// etc. Code here removed. It gets an asset and creates a bitmap from the
// asset, sizing the bitmap based on the imageView width and height
}
布局如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:menu="menu_main,menu_categories">
<ImageView
android:id="@+id/categoryBackgrndImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
<technology.grandma.margriver.AutoGridRecylerView
android:id="@+id/categoryRecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnWidth="330dp"
android:scrollbars="vertical"
tools:listitem="@layout/list_item_category"/>
</FrameLayout>
我的互联网研究似乎证实了这个代码是正确的。你能看出这里有什么问题吗?
最佳答案
尝试使用 OnLayoutChangeListener
代替:
imageView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
int width = imageView.getMeasuredWidth();
int height = imageView.getMeasuredHeight();
imageView.removeOnLayoutChangeListener(this);
}
});
由于 OnGlobalLayoutListener
观察布局更改的所有层次结构,因此假设在层次结构中布置任何 View 时都可能触发它。此外,measuredWidth
和 measuredHeight
更有可能在此时已知。
关于android - onGlobalLayout() 可以在布局 View 之前调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39889532/
我有一个 Logo View ,它是一个包含单个 ImageView 的全屏 fragment 。 Logo 图像完全可见后,我必须执行一些操作。 以下代码用于调用特殊任务 @Override
在我的代码中,我试图找到 textview 占用的高度.. public void onCreate(Bundle savedInstanceState) { super.onCreate(s
我正在使用 Kotlin,并使用 onGlobalLayout 加载 ImageView 。通过 loadUrl。在不使用 afterMeasured 的情况下,我的图像加载得很好,但有时由于高度为
我已经在使用 ViewTreeObserver 的 Activity 中没有问题,但在这种情况下我没有得到 onGlobalLayout 回调。 由于我在执行 http API 调用后获得了 View
public class QuadPadFragment extends Fragment { int w = 0; int h = 0; public View onCreateView(Lay
我的 Firebase 崩溃报告显示以下代码在极少数设备上出现故障。我无法重现这个问题。谁能建议可能是什么问题?看来问题是 imageView.getWidth() 或 imageView.getHe
我在两个 TextView 的父 View 上使用 viewTreeObserver.addOnGlobalLayoutListener , onGlobalLayout 以获得一个的宽度和另一个的高
我有以下 ListView 项目: 目前,除了 TextView (2) 的宽度外,一切都按预期工作并放置在应有的位置。 因为我使用了带有一些 wrap_contents 的 RelativeLayo
我对从新 Google Maps API 嵌入 SuportMapFragment 的 Fragment 有疑问。创建我的 fragment 时,它从 onResume 方法开始的 AsyncTask
我有一个 Android 对话框,我想将其放置在其窗口中的特定位置。 我正在使用 API 8 为什么int a == -2和int b == 153不是正数? 有什么区别 getLayoutParam
我的 fragment 中有以下代码: public void someMethod() { scrollView.getViewTreeObserver().addOnGlobalLayou
我是一名优秀的程序员,十分优秀!