我的应用程序中的大多数页面都有一个进度条实现。 我想创建一个自定义视图组,它始终包含一个进度条。
例如,
<LinearLayout ...>
<ProgressBar .../>
</LinearLayout>
我可以创建类似
的内容吗?<ActivityBody...>
//Other elements
</ActivityBody>
活动主体总是有ProgressBar,所以我总是可以根据需要隐藏和显示进度条,而不必每次都包含进度条。
答案 0 :(得分:1)
创建新的自定义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);
}
}
如果您想让ProgressBar始终位于Top:
show()
和hide()
方法。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;
}
}