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。

更进一步,您必须调用您的 Activity setContentView这是您的 UI 上可见的布局。

因此调用:

findViewById将在屏幕上返回您的进度条,但调用layout.findViewById将返回该布局进度条(正确),但这不是您可以在屏幕上看到的进度条。

于 2012-06-24T22:39:07.260 回答
0

这对我有用:

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

我的解决方法是在 XML 中隐藏视图,然后在需要时在运行时取消隐藏/隐藏它: android:visibility="gone"

于 2015-06-24T14:03:42.027 回答