アプリのフラグメントにProgressBar
を追加しています。次のように、2つの主要なフラグメント(タブとして使用)に設定しました。
ProgressBar
in activity_main.xml
:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/fragment_container"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<ProgressBar
Android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true" />
</RelativeLayout>
ProgressBar
VISIBLE
とGONE
の設定:
spinner = (ProgressBar)getActivity().findViewById(R.id.progressBar1);
spinner.setVisibility(View.VISIBLE);
spinner.setVisibility(View.GONE);
これは問題なく動作します。 ProgressBar
を持つ別のフラグメントに別のWebView
を追加しようとしました。
ProgressBar
in fragment_article.xml
:
<RelativeLayout 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="info.androidhive.slidingmenu.ArticleFragment$PlaceholderFragment" >
<WebView Android:id="@+id/webPage"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"/>
<ProgressBar
Android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true" />
</RelativeLayout>
可視性の設定:
spinner = (ProgressBar)getActivity().findViewById(R.id.progressBar1);
spinner.setVisibility(View.VISIBLE);
spinner.setVisibility(View.GONE);
前のコードと同じ方法で可視性を設定しますが、何らかの理由でこれはProgressBar
をGONE
に設定していません。何が悪いのかわからない。
ここで提案されているようにclearAnimation
を使用してみました Android、setVisbilityがRelativeLayoutで機能しなくなりました ですが、まだ何もありません。
spinner.clearAnimation();
spinner.setVisibility(View.GONE);
このコードを確認してください:
spinner = (ProgressBar)getActivity().findViewById(R.id.progressBar1);
フラグメントを使用している場合は、次のようになります。
spinner = (ProgressBar)viewIinflated.findViewById(R.id.progressBar1);//same case with dialogs
アクティビティを使用している場合:
spinner = (ProgressBar)findViewById(R.id.progressBar1);
同じ問題が発生しました(progressBar.setVisibility()が機能していませんでした)。
@Illegal Argumentが言ったように、
// in Activity
ProgressBar mProgressBar = (ProgressBar)findViewById(R.id.progressBar1);
mProgressBar.setVisibility(View.GONE);
そのコードがuiThread(mainThread)で実行されている場合は、機能しているはずです。
私の問題は、uiThreadではなくコードを実行しようとしていたことでした。だから私はコードをから変更することで問題を解決しました
mProgressBar.setVisibility(View.GONE);
に
runOnUiThread(new Runnable() {
@Override
public void run() {
mProgressBar.setVisibility(View.GONE);
}
});
おそらくView.GONE
は、View
が画面に描画されないようにし、別のView
Android:layout_align[POSITION]
コンポーネントはそのView
に定義されている可能性があるため、それらの位置を計算することはできません。
View.INVISIBLE
は機能するため、非表示になりますが、View
はまだ存在し、他のView
は、位置合わせが設定されている場合、位置を計算できます。