android - 以编程方式将进度条放在屏幕的中心

标签 android android-layout progress-bar

我正在创建一个扩展LinearLayout的类。我正在尝试以编程方式进行布局。这是我到目前为止所做的:

RelativeLayout.LayoutParams parentParam = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.MATCH_PARENT);

    this.setLayoutParams(parentParam);
    this.setOrientation(LinearLayout.VERTICAL);

    WebView webView = new WebView(context);
    LinearLayout.LayoutParams webViewParam = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.MATCH_PARENT);

    webView.setLayoutParams(webViewParam);
    this.addView(webView);

    pb = new ProgressBar(context);
    LinearLayout.LayoutParams pbParam = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    pbParam.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL;
    pb.setLayoutParams(pbParam);
    webView.addView(pb);

我的所有事情都工作正常,WebViewProgressBar 可见并且正在执行相应的任务,但我试图将 ProgressBar在屏幕的中心

我在这里缺少什么。任何类型的输入都将受到赞赏。

编辑: 现在的输出如下所示:

enter image description here

最佳答案

这是我将 ProgressBar 置于中心的方法。我已经使用 ScrollView 来达到我的目的。这是我使用过的代码:

RelativeLayout.LayoutParams parentParam = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.MATCH_PARENT);

    this.setLayoutParams(parentParam);
    this.setOrientation(LinearLayout.VERTICAL);

    scrollView = new ScrollView(context);
    scrollView.setLayoutParams(new FrameLayout.LayoutParams(
            FrameLayout.LayoutParams.MATCH_PARENT,
            FrameLayout.LayoutParams.MATCH_PARENT,
            Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL));
    scrollView.setFillViewport(true);

    scrollView.setBackgroundColor(Color.TRANSPARENT);

    pb = new ProgressBar(context);
    LinearLayout.LayoutParams pbParam = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    pb.setLayoutParams(pbParam);

    RelativeLayout rel = new RelativeLayout(context);
    RelativeLayout.LayoutParams relParam = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    relParam.addRule(RelativeLayout.CENTER_IN_PARENT);
    rel.addView(pb, relParam);

    scrollView.addView(rel);

    webView = new WebView(context);
    LinearLayout.LayoutParams webViewParam = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.MATCH_PARENT);
    webViewParam.gravity = Gravity.CENTER_HORIZONTAL
            | Gravity.CENTER_VERTICAL;
    webView.setLayoutParams(webViewParam);

    this.addView(scrollView);

    this.addView(webView);  

希望这能帮助其他正在尝试同样事情的人。

关于android - 以编程方式将进度条放在屏幕的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21378225/

相关文章:

java - 启动动画服务 Activity

java - 在 LinearLayout 中居中多个 Framelayout

android - layout_height ="wrap_content"不适用于 android.support.design.widget.TabLayout

java - 在android Activity 中的2个布局之间切换

javascript - 下个月倒计时 - 进度条 - JavaScript

android - 如何在 android 中使用 http post 发送 xml 文件。我将 xml 文件放在代码中的位置

android - 建立Android ionic 项目时发生错误

c++ - 缩放进度条值

android - 恢复缓存数据 RecyclerView + Firestore

delphi - 在 Vista Aero 上禁用进度条动画