提问人:ema3272 提问时间:10/14/2023 更新时间:10/19/2023 访问量:25
配置更改后,工具栏项没有尺寸(宽度、高度、左侧、右侧等)
toolbar items have no dimensions (width, height, left, right, ...) after a configuration change
问:
我正在开发一个教程,该教程需要在工具栏的各个项目上显示指针。 工具栏归活动所有。 在运行本教程的片段中,我有以下代码:
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
...
tutorialViewModel.getTutoData().observe(getViewLifecycleOwner(), tutoData -> {
...
scToolbar = getActivity().findViewById(R.id.toolbar);
...
androidx.appcompat.widget.AppCompatImageButton navigationButton = null;
try {
navigationButton = (androidx.appcompat.widget.AppCompatImageButton) scToolbar.getChildAt(scToolbar.getChildCount() - 1);
} catch (Exception ClassCastException) {
for (int i = 0; i < scToolbar.getChildCount(); i++) {
if (scToolbar.getChildAt(i) instanceof androidx.appcompat.widget.AppCompatImageButton) {
navigationButton = (androidx.appcompat.widget.AppCompatImageButton) scToolbar.getChildAt(i);
break;
}
}
}
androidx.appcompat.widget.AppCompatImageButton finalNavigationButton = navigationButton;
navigationButton.post(new Tutorial(tutoMsg, (int) (finalNavigationButton.getLeft() + 0.5f* finalNavigationButton.getWidth()), 0, finalNavigationButton.getHeight(), tutoData.isTutoOutOfSequence()));
...
});
首次启动活动和此片段时,此代码工作正常。
一旦发生配置更改(实际上是方向更改),工具栏本身及其每个项目的宽度/高度/左/上/右/下字段都等于零,从而破坏了我指向任何特定项目的努力。
为什么? 我应该在此代码中更改哪些内容?
答:
0赞
ema3272
10/19/2023
#1
以下代码是一种解决方法(我确实认为这不是解决方案;但是它解决了我的问题):
helpFrameLayout.post(() -> tutorialViewModel.getTutoData().observe(getViewLifecycleOwner(), tutoData -> {.post(() -> tutorialViewModel.getTutoData().observe(getViewLifecycleOwner(), tutorialData -> { ... }
的
tutorialViewModel.getTutoData().observe(getViewLifecycleOwner(), tutoData -> { ... }
其中 是显示教程消息的 ConstraintLayout。tutorialViewModel
评论