2016-05-17 4 views
-2

Вот моя проблема: Когда некоторые изображения помещаются в GridLayout, другие изображения приложений вокруг них исчезают. Я заметил, что изображение, которое, кажется, «вытолкнет» другие изображения с точки зрения, действительно большие ИЗОБРАЖЕНИЯкнопки не отображаются или удаляются друг от друга в GridLayout

+0

Можете ли вы разместить свой макет и код, который заполняет макет? Я не думаю, что сообщение об ошибке об адаптере указывает на проблему. – Cheticamp

+0

@Cheticamp I обновлен с помощью файла Layout Xml. Пожалуйста, дайте мне знать, если вы увидите что-нибудь. Большое спасибо заранее –

+0

Является ли этот XML все в одном файле или вы добавили пару разных макетов вместе? Я не вижу XML для вашего GridLayout. – Cheticamp

ответ

1

Я расскажу о некоторых областях в XML, которые могут вызвать некоторые проблемы. Во-первых, вам нужен файл макета XML, который выглядит примерно так: это будет содержать макет верхнего уровня. Это будет в собственном файле.

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

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

Обратите внимание, что RecyclerView стоит отдельно в LinearLayout. Затем вам понадобится отдельный XML-файл , который будет содержать макет для ImageButton и TextView для каждой ячейки вашего макета. Это будет соответствовать каждой ячейке сетки в вашем RecyclerView. Я использовал android:scaleType="centerCrop" для размещения больших изображений в ImageButton.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_margin="10dp"> 

    <ImageButton 
     android:id="@+id/new_app_button" 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:layout_centerHorizontal="true" 
     android:adjustViewBounds="true" 
     android:scaleType="centerCrop" /> 

    <TextView 
     android:id="@+id/new_app_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/new_app_button" 
     android:layout_centerInParent="true" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" /> 

</RelativeLayout> 

onCreateViewHolder() из RecyclerViewHolder будет выглядеть следующим образом предполагающей «grid_cell.xml» это имя файла XML выше.

@Override 
public RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) { 
    View layoutView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.grid_cell, parent, false); 
    RecyclerViewHolders holder = new RecyclerViewHolders(layoutView); 
    return holder; 
} 

Дайте это попробовать. Я думаю, что все остальное в порядке. Надеюсь, это поможет вам.

+0

Спасибо, что решила проблема! Я соглашусь на ваш вопрос сейчас :) - Emily –

+0

Я рад, что это сработало. – Cheticamp

+0

На этот вопрос не было 50 бонусов? – Cheticamp

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