Reputation: 4960
Most of the pages in my application have a progress bar implementation. I would like to create a custom view group which always includes a progress bar.
For example,
<LinearLayout ...>
<ProgressBar .../>
</LinearLayout>
Can I create something like
<ActivityBody...>
//Other elements
</ActivityBody>
Where activity body always has the ProgressBar so I can always just hide and show progress bar as needed without including the progress bar each time.
Upvotes: 1
Views: 116
Reputation: 170
create new custom ViewGroup extends FrameLayout
like this :
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);
}
}
if you want to make ProgressBar always on Top:
show()
, and hide()
methods.removeMyProgressBar()
method.to be like this :
public void show() {
if (myProgressBar == null)
addMyProgressBar();
}
public void hide() {
if (myProgressBar != null)
removeMyProgressBar();
}
private void removeMyProgressBar() {
if (myProgressBar != null) {
removeView(myProgressBar);
myProgressBar = null;
}
}
Upvotes: 1