6

私はこのようなレイアウトを持っています:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" 
android:background="@drawable/menu_background"
>

<ProgressBar 
  android:id="@+id/aPBar"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerInParent="true"
  style="@android:style/Widget.ProgressBar.Inverse"/>

 ...

</RelativeLayout>

私の onCreate メソッドでは、最初に ProgressBar を非表示にするためにこれを行います。

LayoutInflater inflater = getLayoutInflater();
RelativeLayout layout = (RelativeLayout)inflater.inflate(R.layout.achievements_screen, null);

progressBar=(ProgressBar)layout.findViewById(R.id.aPBar);
progressBar.setVisibility(View.INVISIBLE);

しかし、ProgressBarはまだ常に表示されています... 私も試しView.GONEました。

私が設定したとき

android:visible="gone"

XMLファイルでProgressBarは表示されませんが、表示させることはできません

 progressBar.setVisibility(View.Visible);
4

3 に答える 3

1

Layout Inflater を使用して新しいビューをインフレートしています。これは、現在画面に表示されているビューではありません。

したがって、可視性を変更しても、画面の UI には影響しません。

setContentViewActivity をさらに上に呼び出したはずです。これがUI に表示されるレイアウトです。

したがって、次のように呼び出します。

findViewById画面にプログレスバーが返さlayout.findViewByIdれますが、呼び出すとレイアウトのプログレスバーが(正しく)返されますが、それは画面に表示されるプログレスバーではありません。

于 2012-06-24T22:39:07.260 に答える
0

私にとっての回避策は、XMLでビューを非表示にし、必要に応じて実行時に表示/非表示にすることでした: android:visibility="gone"

于 2015-06-24T14:03:42.027 に答える
0

これは私にとってはうまくいきます:

rootView.findViewById(R.id.progress_bar).setVisibility(View.GONE);
于 2014-09-22T09:07:44.183 に答える