我正在尝试将FrameLayout设置为View.GONE以及许多其他视图,以响应屏幕倾斜到横向.
到目前为止,它似乎适用于所有视图,除了一个FrameLayout.它不会去!
我以与所有其他视图相同的方式同时将其设置为View.GONE,但它仍然存在:
List<View> viewsToHide = getAllNonFullscreenViews();
for (View v : viewsToHide) {
v.setVisibility(View.GONE);
}
Run Code Online (Sandbox Code Playgroud)
我检查实际上是否找到了视图并将其单独设置为GONE.我已经调用了clearAnimation(),因为我在某一点上制作动画,我听说这可能是一个问题.
View dropdownContainer = getActivity().findViewById(R.id.dropdownContainerView);
dropdownContainer.clearAnimation();
dropdownContainer.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)
我试图在ui线程上单独设置GONE.再次设置断点并确保实际找到视图并设置为GONE.
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
View dropdownContainer = getActivity().findViewById(R.id.dropdownContainerView);
dropdownContainer.clearAnimation();
dropdownContainer.setVisibility(View.GONE);
}
});
Run Code Online (Sandbox Code Playgroud)
我再次尝试了同样的事情,但是经过一段时间的延迟
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
View dropdownContainer = getActivity().findViewById(R.id.dropdownContainerView);
dropdownContainer.clearAnimation();
dropdownContainer.setVisibility(View.GONE);
}
}, 3000);
Run Code Online (Sandbox Code Playgroud)
特别奇怪的是,当我在延迟后查看视图时,它实际上设置为GONE?!但我仍然可以在屏幕上看到它.它也绝对是正确的视图,因为如果我立即将它设置为GONE而不是对任何事物做出反应,那么视图会像预期的那样消失.
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//check the dropdown
View dropdown = getActivity().findViewById(R.id.dropdownContainerView);
int visibility = dropdown.getVisibility();
if …Run Code Online (Sandbox Code Playgroud) android ×1