我使用this“方法”来创建进度条。它工作直到我不使用碎片。
现在我使用片段,material drawer和WebView(当然在片段中)。我创建了进度条,但它显示在屏幕顶部。
进度条:
progressBarLoad = new ProgressBar(getActivity().getBaseContext(), null, android.R.attr.progressBarStyleHorizontal);
progressBarLoad.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 24));
progressBarLoad.setProgress(100);
progressBarLoad.setProgressDrawable(getResources().getDrawable(R.drawable.progress_horizontal_holo_light));
FrameLayout decorView = (FrameLayout) getActivity().getWindow().getDecorView();
decorView.addView(progressBarLoad);
ViewTreeObserver observer = progressBarLoad.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
progressBarLoad.setY(Main.getActionBarSize() + (float) Math.ceil(25 * getResources().getDisplayMetrics().density) - 10);
ViewTreeObserver observer = progressBarLoad.getViewTreeObserver();
observer.removeOnGlobalLayoutListener(this);
}
});
主要布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Main.Main">
<android.support.v7.widget.Toolbar
android:id="@+id/Toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/green"
app:popupTheme="@style/Theme.AppCompat"
app:theme="@style/ToolbarTheme" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frameLayout" />
</LinearLayout>
最后是webView:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/SwipeContainer"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:id="@+id/WebViewMain"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>
这里有截图:
所以,问题是,如何将此进度条添加到内容屏幕?不是整个设备屏幕。
答案 0 :(得分:0)
尝试在添加片段后,将进度条添加到活动的框架布局中,而不是装饰视图。
答案 1 :(得分:0)
你可以把它放在XML中,这是最简单的方法。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Main.Main">
<android.support.v7.widget.Toolbar
android:id="@+id/Toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/green"
app:popupTheme="@style/Theme.AppCompat"
app:theme="@style/ToolbarTheme"/>
<ProgressBar
android:id="@+id/progressBar"
android:layout_below="@+id/Toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<FrameLayout
android:layout_below="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frameLayout"/>
</RelativeLayout>
或者您可以将进度条放在您膨胀的布局中。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<android.support.v4.widget.SwipeRefreshLayout
android:layout_below="@+id/progressBar"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/SwipeContainer"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView
android:id="@+id/WebViewMain"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>
答案 2 :(得分:0)
所以,首先要感谢所有答案。我尝试了很多东西,搜索了很多,但我一无所获。然后......我突然想起如果我在相对布局中放置一些对象/布局,它们将成为屏幕的顶部。所以我在开始时做错了。我把进度条放在相对布局的顶部 - &gt;这就是为什么我没有看到。所以我把相对布局的底部和woala放在一起!它有效...但是等不正确..
为什么呢?因为我再次添加了工具栏大小,当然还有编程。条形图从工具栏上方大约40px以上。所以我想出来了,现在有了这个代码,它可以在任何屏幕上运行:
progressBarLoad = (ProgressBar) view.findViewById(R.id.progressBar);
progressBarLoad.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 24));
progressBarLoad.setProgress(100);
progressBarLoad.setProgressDrawable(getResources().getDrawable(R.drawable.progress_horizontal_holo_light));
ViewTreeObserver observer = progressBarLoad.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//THIS IS IMPORTANT
progressBarLoad.setY(((float) Math.ceil(12.5*getResources().getDisplayMetrics().density)-38));
ViewTreeObserver observer = progressBarLoad.getViewTreeObserver();
observer.removeOnGlobalLayoutListener(this);
}
});