gpt4 book ai didi

android - 可重用 View 组

转载 作者:行者123 更新时间:2023-11-30 00:53:05 25 4
gpt4 key购买 nike

我的应用程序中的大多数页面都有进度条实现。我想创建一个始终包含进度条的自定义 View 组。

例如,

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

我可以创建类似的东西吗

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

Activity 主体始终具有 ProgressBar,因此我始终可以根据需要隐藏和显示进度条,而无需每次都包含进度条。

最佳答案

创建新的自定义 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 一直在顶部:

  • 编辑 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;
}
}

关于android - 可重用 View 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40614297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com