如何在android中的Action Bar上显示Progress Bar?

时间:2016-09-26 07:14:35

标签: android xamarin xamarin.android progress-bar xamarin.forms

我想在操作栏中显示进度条。我试图展示它,但是当我尝试这样做的时候,我在动作栏中同时获得了进度条,微调器和横向。

enter image description here

在顶部蓝色水平进度条正在运行且右侧微调器正在运行。但是我想在Hubsystem徽标下方只有顶级蓝色进度条。我不知道旋转杆出现的原因。

我正在使用以下代码:

 RequestWindowFeature(Android.Views.WindowFeatures.Progress);
 base.OnCreate(bundle);


 SetProgressBarIndeterminateVisibility(true);
 SetProgressBarIndeterminate(true);
 SetProgressBarVisibility(true);

我如何只在操作栏底部获得蓝色进度条?

1 个答案:

答案 0 :(得分:1)

设计简单,只需在活动的主要布局中添加横向风格的进度条。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"
    android:layout_width="match_parent" android:layout_height="match_parent">
<ProgressBar android:id="@+id/activity_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="-8dp"
    style="@android:style/Widget.DeviceDefault.ProgressBar.Horizontal"
    />
  <!-- Other layouts -->
</LinearLayout>

这里我保留了android:layout_marginTop =&#34; -8dp&#34;因为如果你的动作栏上有阴影,那么它会调整到动作栏附近。如果没有阴影,请根据您进行调整。

注意:只有在XML布局中使用ToolBar时才可以接受。 如果您正在使用自定义编码,请在MainActivity中执行此操作。

public abstract class MainActivity extends Activity {
    private ProgressBar mProgressBar;

    @Override
    public void setContentView(View view) {
        init().addView(view);
    }

    @Override
    public void setContentView(int layoutResID) {
        getLayoutInflater().inflate(layoutResID,init(),true);
    }

    @Override
    public void setContentView(View view, ViewGroup.LayoutParams params) {
        init().addView(view,params);
    }

    private ViewGroup init(){
        super.setContentView(R.layout.progress);
        mProgressBar = (ProgressBar) findViewById(R.id.activity_bar);
        return (ViewGroup) findViewById(R.id.activity_frame);
    }

    protected ProgressBar getProgressBar(){
        return mProgressBar;
    }
}