2016-06-21 18 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) –