可重复使用的视图组
问题描述:
我的应用程序中的大多数页面都有一个进度条实现。 我想创建一个总是包含进度条的自定义视图组。可重复使用的视图组
例如,
<LinearLayout ...>
<ProgressBar .../>
</LinearLayout>
我能创造这样
<ActivityBody...>
//Other elements
</ActivityBody>
凡活动身体总是有进度,所以我可以永远只是隐藏和显示进度条根据需要,而不包括进度条每一次。
答
创建新的自定义扩展的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;
}
}
肯定的是,提供'ActivityBody'是'ViewGroup'(定制'LinearLayout'例如) – pskink
是的,但一个例子来说明如何我要补充进度酒吧的ActivityBody将是伟大的。 –
只需调用'addView()' – pskink