2013-12-13 53 views
3

所以我檢查了其他問題來隱藏進度條,但似乎都建議做我已經在做的事情。Android - 無法隱藏進度條

我試圖使用

mProductListProgressBar.setVisibility(View.GONE); 

,我通過

mProductListProgressBar = (ProgressBar) mRoot.findViewById(R.id.product_list_progressbar); 

找到它,我知道這是因爲我可以用不同的LayoutParams之前在屏幕上移動了正確的進度條命令。但它不會隱藏。

當前代碼,我(包括進度條的移動)是

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
mProductListProgressBar.setLayoutParams(params); 
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); 
mProductListProgressBar.setLayoutParams(params); 

mProductListProgressBar.setVisibility(View.GONE); 
mProductListErrorTextView.setVisibility(View.VISIBLE); 
mProductListErrorTextView.setText(errorMessage); 

進度條移動到左側和底部,但仍清晰可見。我已經嘗試View.INVISIBLE以及View.GONE,但都沒有工作。

這讓我瘋狂!

由於

UPDATE 1

protected void showError(int errorMessage){ 

    /*RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
    mProductListProgressBar.setLayoutParams(params); 
    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE); 
    mProductListProgressBar.setLayoutParams(params); 
    */ 
    mProductListProgressBar.setVisibility(View.GONE); 
    mProductListErrorTextView.setVisibility(View.VISIBLE); 
    mProductListErrorTextView.setText(errorMessage); 
} 

和與片段的

showError(R.string.wish_list_empty); 

UPDATE 2

XML調用它

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <GridView 
     android:id="@+id/product_list_gridview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@android:color/transparent" 
     android:horizontalSpacing="@dimen/standardMargin" 
     android:listSelector="@android:color/transparent" 
     android:numColumns="@integer/columns" 
     android:scrollbarStyle="outsideOverlay" 
     android:verticalSpacing="@dimen/standardMargin" /> 

    <RelativeLayout 
     android:id="@+id/product_list_header" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/refineHeaderHeight" 
     android:background="@drawable/product_list_header" 
     android:visibility="gone" > 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentRight="true" 
      android:padding="10dp" 
      android:src="@drawable/dropdown_image" /> 

     <TextView 
      android:id="@+id/product_list_header_title" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:gravity="center|left" 
      android:paddingLeft="10dp" 
      android:textAllCaps="true" 
      android:textColor="@android:color/black" 
      android:textIsSelectable="false" 
      android:textSize="@dimen/standardTextSize" /> 

     <TextView 
      android:id="@+id/product_list_refine_button" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentRight="true" 
      android:background="@drawable/button" 
      android:clickable="true" 
      android:gravity="center_vertical" 
      android:paddingLeft="20dp" 
      android:paddingRight="30dp" 
      android:text="@string/refine" 
      android:textAllCaps="true" 
      android:textColor="#838383" 
      android:textSize="@dimen/standardTextSize" /> 
    </RelativeLayout> 

    <LinearLayout 
     android:id="@+id/product_list_footer" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_gravity="center" 
     android:background="@drawable/product_list_footer" 
     android:gravity="center" 
     android:orientation="horizontal" 
     android:padding="15dp" 
     android:visibility="gone" > 

     <ProgressBar 
      android:layout_width="15dp" 
      android:layout_height="15dp" 
      android:layout_gravity="center" 
      android:layout_marginRight="10dp" 
      android:background="@android:color/transparent" 
      android:gravity="center" /> 

     <TextView 
      android:id="@+id/product_list_footer_text_view" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:text="@string/loading_message" 
      android:textAllCaps="true" 
      android:textSize="@dimen/standardTextSize" /> 
    </LinearLayout> 

    <ProgressBar 
     android:id="@+id/product_list_progressbar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:visibility="gone"/> 

    <TextView 
     android:id="@+id/product_list_error_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:textAllCaps="true" 
     android:textSize="@dimen/standardTextSize" 
     android:visibility="gone" /> 

    <TextView 
     android:id="@+id/debug" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#aa000000" 
     android:gravity="left|center_vertical" 
     android:minLines="2" 
     android:padding="10dp" 
     android:textColor="@android:color/white" 
     android:visibility="gone" /> 

</RelativeLayout> 
+0

Can你發佈你的整個活動課程? – DMC

+0

我正在做一個片段。你想要兩個? 這是工作代碼,所以我不確定我是否允許粘貼整個活動等?我可以發佈被調用的整個函數以及它是如何調用的 –

+1

相對佈局中的其他項目的位置依賴於/「相對」您的'mProductListProgressBar'嗎? – kiruwka

回答

2

此行爲的問題通常發生在您嘗試隱藏的視圖需要其他人引用時。

對於您的情況,正如您在評論中提到的,您使用mProductListProgressBar代替GridViewsetEmptyView()

遇到類似麻煩的另一種可能性,當在設定自己的位置相對mProductListProgressBar你的親戚容器佈局有其他意見。此設置可以在代碼中或在.xml中。

請確保你沒有任何以上和View.GONE應該工作正常。

至於setEmptyView() - 它只用於在適配器爲空時向用戶顯示有意義的內容。我建議只需在中間設置簡單的佈局,例如TextView "no items",並將其傳遞到setEmptyView()

希望有所幫助。

+0

嗯,事實證明,你可以簡單地設置'setEmptyView(null)',我想這等於完全忽略這個調用。我只是試過了,如果沒有數據,你會有空白的gridview。 – kiruwka

0

我不知道你的代碼是怎麼寫的,但有類似的問題,解決了從消除聲明視圖對象

mProductListProgressBar = (ProgressBar) mRoot.findViewById(R.id.product_list_progressbar); 

應該

mProductListProgressBar = (ProgressBar) findViewById(R.id.product_list_progressbar); 

試試吧,檢查

原因是進度條位於層次結構中每個視圖的頂部,它不屬於任何根視圖。

+0

如果我刪除mRoot它說'方法findViewById(int )是未定義的類型ProductListFragment'我正在做一個片段中的所有這些。此外,它不像進度條沒有被找到,因爲我可以在屏幕上移動它,而不是隱藏它 –

+0

使用getListView()。FindViewById(int) –

+0

getListView沒有工作(不是有效/可識別的函數),所以我使用getView,但是這並沒有隱藏進度條。正如我所說,無論如何它已經成功地抓住了進度條。我認爲@kiruwka已經提出了一些東西,因爲它是綁定到gridview –

0

我知道這是一個老問題。但我花了很多時間調試類似的情況。我無法在unityPlayer視圖之上隱藏ProgressBar。

要確保的另一件事是,你在UI線程中隱藏它。

爲了確保與環繞你的UI代碼:

runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      loadingIndicator.setVisibility(View.GONE); 
     } 
    }); 
1

爲我工作的溶液中,隱藏在XML的觀點:

android:visibility="gone"

,然後取消隱藏/隱藏它在運行時當需要時:

yourProgressBar.setVisibility(View.VISIBLE) // or View.VISIBLE depending on situation