2016-06-21 33 views
0

我有这个自定义视图(相对布局),其中一些其他视图高度的基础上,我试图设置阿尔法和可见性。查看#setVisibility在API上不可见<17

我的alpha值根据视图高度而变化,我检查我的alpha是否为< CONSTANT(如0.033)我将该视图的可见性设置为可见。一切正常上面的API 18 n,但由于某种原因,它不适用于较低的API。

代码看起来是这样的

if (val< 0.033){ 
     setVisibility(GONE); 
    } else { 
     setVisibility(VISIBLE); 
     for (int i = getChildCount()- 1; i >= 0; i--) { 
      View v = getChildAt(i); 
      v.setVisibility(VISIBLE); 
      v.invalidate(); 
     } 
    } 
    setAlpha(val); 
    invalidate(); 

我真的需要Visibility.GONEVisibility.VISIBLE,以便为我的观点做正常运作。 Visibility.INVISIBLE不符合我的要求。

我试图在Logcat中打印出可见性,它在logcat中显示VISIBLE,但是在实际的设备上它不是。

还有一件事,如果我没有设置VISIBILITY GONE,即使在较低的API上,一切都可以正常工作。

所以主要问题是一旦可见性设置为走了我不能使其可见再次

尝试:

  1. 我想经历所有的子视图,使它们可见。 =不工作:(

    for (int i = getChildCount()- 1; i >= 0; i--) { 
         View v = getChildAt(i); 
         v.setVisibility(VISIBLE); 
        } 
    
  2. 打过电话后无效我设置的知名度=不工作:(
  3. 试图这样做既让孩子视图中显示和呼叫后失效。

回答

0

在你的代码,它就像setVisibility(GONE); ,但它应该是这样someView.setVisibility(GONE);

+0

我有我的哪个类扩展相对布局的自定义视图。所以呼吁someView.setVisibility是一样调用setVisibility( GONE) – user3354265

+0

或尝试使用setVisiblity(View.GONE) –