可重复使用的视图组

可重复使用的视图组

问题描述:

我的应用程序中的大多数页面都有一个进度条实现。 我想创建一个总是包含进度条的自定义视图组。可重复使用的视图组

例如,

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

我能创造这样

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

凡活动身体总是有进度,所以我可以永远只是隐藏和显示进度条根据需要,而不包括进度条每一次。

+0

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

+0

是的,但一个例子来说明如何我要补充进度酒吧的ActivityBody将是伟大的。 –

+0

只需调用'addView()' – pskink

创建新的自定义扩展的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; 
    } 
}