我有一个带有Indeterminate进度条的布局,当我超过3秒时,我想要隐藏这个进度条并显示一个webview,但由于某些原因它不起作用。
这是我的XML:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fl_register_oauth"
tools:context=".fragments.RegisterFragment"
android:background="@color/f_yellow">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity$PlaceholderFragment"
android:gravity="center"
android:layout_gravity="center"
android:orientation="vertical">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/ll_pbar"
android:gravity="center"
android:visibility="gone">
</LinearLayout>
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateDrawable="@drawable/progress" />
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"
android:visibility="gone"
android:layout_gravity="center" />
</LinearLayout>
<FrameLayout
android:id="@+id/FlashBarLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="72dp">
<!-- flash bar content -->
</FrameLayout>
</FrameLayout>
这是我片段的源代码。
public class RegisterFragment extends Fragment {
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_register, container, false);
bar = (ProgressBar) view.findViewById(R.id.progressBar);
webView = (WebView) view.findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
bar.setVisibility(View.GONE);
webView.setVisibility(View.VISIBLE);
}
});
我试过用postDelayed处理程序来做这件事,但是我已经意识到它不能正常工作,尽管我把这句话写成了处理程序。
bar.setVisibility(View.GONE);
webView.setVisibility(View.VISIBLE);
感谢您的帮助。
答案 0 :(得分:4)
尝试:
((new Handler()).postDelayed(new Runnable() {
@Override
public void run() {
bar.setVisibility(View.GONE);
webView.setVisibility(View.VISIBLE);
}
}, 3000);
您不需要使用runOnUiThread。问题是:您的代码立即执行,活动开始时没有显示进度条。