小编pbe*_*vis的帖子

FrameLayout setVisibility无效

我正在尝试将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

5
推荐指数
1
解决办法
3869
查看次数

标签 统计

android ×1