查看getVisibility()isShown()返回不正确的可见性

我有一个视图,有条件地添加到父项。 我检查,如果它已经添加到父母或不幸,它总是返回其可见。

if (findViewById(R.id.bottom_bar).getVisibility == View.Visible) if (findViewById(R.id.bottom_bar).isShown()) 

即使视图从未被添加也是不可见的。

Solutions Collecting From Web of "查看getVisibility()isShown()返回不正确的可见性"

getVisibility()只是简单地返回视图添加到窗口时所需的可见性。 除非调用setVisibility()否则不会更改。 它也不表示视图是否在屏幕上可见。

isShown()是相似的。 这里是文档:

返回此视图及其所有祖先的可见性

返回
如果这个观点和所有的祖先都是VISIBLE那么这个观点是对的

我必须做类似的事情,我倾向于问视图是否有父(myView.getParent()!= null),那么我认为视图已被添加到另一个视图。 通常隐藏视图,我从父母中删除它。 你也可以重写onDraw方法,如果你没有调用绘图,你肯定是不可见的。

 case R.id.title_call_button: if(llButtonCallNow.getVisibility() != View.VISIBLE){ llButtonCallNow.setVisibility(View.VISIBLE); } else{ llButtonCallNow.setVisibility(View.GONE); Toast.makeText(getBaseContext(), ("Im here baby :)"), Toast.LENGTH_SHORT).show(); } break; 

如果findViewById(R.id.bottom_bar)返回非null,那么至less有一个bottom_bar View已经在View层次结构中的某处被实例化了。 这是你的支票。