2016-11-15 83 views
1

我的應用程序中的大多數頁面都有一個進度條實現。 我想創建一個總是包含進度條的自定義視圖組。可重複使用的視圖組

例如,

<LinearLayout ...> 
<ProgressBar .../> 
</LinearLayout> 

我能創造這樣

<ActivityBody...> 
//Other elements 
</ActivityBody> 

凡活動身體總是有進度,所以我可以永遠只是隱藏和顯示進度條根據需要,而不包括進度條每一次。

+0

肯定的是,提供'ActivityBody'是'ViewGroup'(定製'LinearLayout'例如) – pskink

+0

是的,但一個例子來說明如何我要補充進度酒吧的ActivityBody將是偉大的。 –

+0

只需調用'addView()' – pskink

回答

0

創建新的自定義擴展的ViewGroup 的FrameLayout

這樣的:

public class CustomLayout extends FrameLayout { 
    ProgressBar myProgressBar; 
    public CustomLayout (Context context) { 
     super(context); 
    } 

    public CustomLayout (Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CustomLayout (Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    public void show() { 
     if (myProgressBar == null) { 
      addMyProgressBar(); 
     } 
     myProgressBar.setVisibility(VISIBLE); 
    } 

    public void hide() { 
     if (myProgressBar == null) { 
      addMyProgressBar(); 
     } 
     myProgressBar.setVisibility(GONE); 
    } 

    private void addMyProgressBar() { 
     myProgressBar = new ProgressBar(getContext()); 
     LayoutParams params = new LayoutParams(100, 100, Gravity.CENTER); 
     addView(myProgressBar, params); 
    } 
} 
如果你想使進度總在最前面

  • 編輯show()hide()方法。
  • add removeMyProgressBar()方法。

是這樣的:

public void show() { 
    if (myProgressBar == null) 
     addMyProgressBar(); 
} 

public void hide() { 
    if (myProgressBar != null) 
     removeMyProgressBar(); 
} 

private void removeMyProgressBar() { 
    if (myProgressBar != null) { 
     removeView(myProgressBar); 
     myProgressBar = null; 
    } 
}