查看getVisibility()isShown()返回错误的可见性

时间:2011-07-22 21:24:27

标签: android

我有一个有条件地添加到父级的视图。 我检查它是否已经添加到父级,不幸的是,它总是返回它可见。

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

if (findViewById(R.id.bottom_bar).isShown()) 

即使从未添加过视图,也会返回true,而且不可见。

4 个答案:

答案 0 :(得分:33)

getVisibility()只会返回您希望视图添加到窗口时的可见性。除非您致电setVisibility(),否则不会更改。它也不表示视图是否在屏幕上实际可见。

isShown()类似。这是doc:

  

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

     

<强>返回
  如果此视图及其所有祖先为VISIBLE

,则为True

答案 1 :(得分:0)

我必须做类似的事情,我倾向于询问视图是否有父(myView.getParent()!= null)然后我假设视图已添加到另一个视图。通常隐藏视图我将其从父项中删除。你也可以覆盖onDraw方法,如果你没有得到绘制的调用,你肯定是不可见的。

答案 2 :(得分:-1)

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;

答案 3 :(得分:-2)

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