gpt4 book ai didi

android - 为什么 setVisibility 不适用于 Fragment/FrameLayout

转载 作者:行者123 更新时间:2023-11-29 16:00:06 24 4
gpt4 key购买 nike

我有一个带有不确定进度条的布局,经过 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>

这是我的 fragment 源代码。

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);

感谢您的帮助。

最佳答案

尝试:

((new Handler()).postDelayed(new Runnable() {
@Override
public void run() {
bar.setVisibility(View.GONE);
webView.setVisibility(View.VISIBLE);
}
}, 3000);

您不需要使用 runOnUiThread。问题是:您的代码立即执行, Activity 开始时没有显示进度条。

关于android - 为什么 setVisibility 不适用于 Fragment/FrameLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25285900/

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