2015-06-20 6 views
0

У меня есть SwipeRefreshLayout. Если у пользователя нет потоков, я хочу показать страницу с ошибкой, иначе RecyclerView.Макет не отображается на Android

RecyclerView работает нормально, но если у пользователя нет потоков, страница с ошибкой не отображается.

Это мой код

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/swipeRefreshLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/recyclerview_stream" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:paddingBottom="@dimen/feed_item_padding_topbottom" 
      android:paddingTop="@dimen/feed_item_padding_topbottom" 
      android:scrollbars="vertical" /> 

     <LinearLayout 
      android:id="@+id/error_page" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_gravity="center" 
      android:gravity="center" 
      android:orientation="vertical" > 

      <ImageView 
       android:layout_width="@dimen/no_found_width" 
       android:layout_height="@dimen/no_found_height" 
       android:layout_marginBottom="15dp" 
       android:src="@drawable/ic_no_found" /> 

      <TextView 
       android:id="@+id/error_text" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:gravity="center" 
       android:text="@string/not_found" 
       android:textSize="@dimen/error_page_textsize" /> 
     </LinearLayout> 

    </android.support.v4.widget.SwipeRefreshLayout> 

</LinearLayout> 
+0

Есть ли у вас код java? Трудно это понять. Также я думаю, что вы должны использовать 'match_parent' вместо' fill_parent' – qwertz

+0

'SwipeRefreshLayout' занимает только один ребенок. Поместите свою страницу ошибки за ее пределы в корневую компоновку. Также измените корневой макет с 'LinearLayout' на' FrameLayout'. –

ответ

0

Вы можете контролировать видимость взглядов путем регулировки видимого свойства.

Есть три возможных состояния:

VISIBLE, невидимое и GONE (не потребляет пространство в макете).

например.

// no error 
errorView.setVisibility(View.GONE); 
recylverView.setVisibility(View.VISIBLE); 

// if error 
errorView.setVisibility(View.VISIBLE); 
recylverView.setVisibility(View.GONE); 

См. Эту ссылку для получения более подробной информации об управлении видимостью. http://developer.android.com/reference/android/view/View.html#setVisibility(int)

Вы также можете установить свойство в XML-файле макета. , вероятно, было бы целесообразно установить вид ошибки на «GONE»

Смежные вопросы