【发布时间】:2021-05-12 15:33:49
【问题描述】:
在我的 Android 应用程序中,我尝试使用 setAnchorView(toolbar) 在工具栏项上方显示 Snackbar。我在启动我的活动后不久创建并显示 Snackbar。它大约有 33% 的时间工作 - 其余时间,Snackbar 从屏幕底部显示(好像从未调用过 setAnchorView)我怎样才能让它 100% 的时间工作?
在 Activity 开始时显示 Snackbars 时,我只有这个随机显示问题。在 Activity 运行几秒钟后显示带有 setAnchorView 的其他 Snackbar 时,它始终按预期工作并显示在工具栏上方。
下面是一些示例代码:
View v = findViewById(R.id.main_relative_layout);
Snackbar sn = Snackbar.make(v, R.string.snackbar_info_starting, Snackbar.LENGTH_SHORT);
sn.setAnchorView(R.id.toolbar);
sn.show();
我在 com.google.android.material:material:1.3.0(当前最新版本)和 1.2.0 中观察到了相同的行为。
我尝试添加一些调试语句来验证工具栏对象是否存在。当我在调用setAnchorView 时遇到此问题时,我怀疑该对象可能为空。我的猜测是不正确的: Toolbar 对象总是被创建并且非空,无论它是否正常工作。这是对象字符串表示:android.widget.LinearLayout{2e0f901 V.E...... ......ID 0,0-0,0 #7f080237 app:id/toolbar}
有什么建议吗?我怀疑工具栏 UI 元素未处于 setAnchorView 使用的“就绪”状态,但我没有足够的 Android 知识来诊断或解决此类问题。
【问题讨论】:
标签: android