2015-11-26 4 views
1

Я хочу сделать RecyclerView как этот:Как сделать RecyclerView к ширине = «wrap_content»

enter image description here

Но в моем случае, вид ребенка не установлен как width="wrap_content" или RecyclerView не установить в качестве width="wrap_content" и "center"

enter image description here

Вот RecyclerView в activity_layout.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       xmlns:tools="http://schemas.android.com/tools" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 
    <android.support.v7.widget.RecyclerView 
      android:id="@+id/recyclerView" 
      android:layout_gravity="center" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 
</RelativeLayout> 

Вот настройки адаптера OnCreate:

public void initRecyclerView(List<Invitation> invitationList) { 
     recyclerView.setHasFixedSize(true); 
     GridLayoutManager manager = new GridLayoutManager(this, 4); 
     recyclerView.setLayoutManager(manager); 
     recyclerView.setAdapter(new ItemGridAdapter(getApplicationContext(), invitationList)); 
    } 

вот мой адаптер:

public class ItemGridAdapter extends RecyclerView.Adapter<ItemGridAdapter.ViewHolderItem> { 
    private final Context context; 
    private final List<Invitation> list; 
    private final DrawableHelper drawableHelper; 

    public ItemGridAdapter(Context context, List<Invitation> list) { 
     this.context=context; 
     this.list=list; 
     this.drawableHelper = new DrawableHelper(); 
    } 

    @Override 
    public ItemGridAdapter.ViewHolderItem onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_grid, parent, false); 
     return new ItemGridAdapter.ViewHolderItem(context,view); 
    } 

    @Override 
    public void onBindViewHolder(final ItemGridAdapter.ViewHolderItem viewHolder, int position) { 
     Invitation invitation = list.get(position); 
     viewHolder.position=position; 
     Picasso.with(context) 
       .load(invitation.getCustomUser().getAvatar()) 
       .transform(new CircleTransformation()) 
       .placeholder(drawableHelper.getDrawableForName(invitation.getCustomUser().getFullName())) 
       .into(viewHolder.userIcon); 
     if (invitation.getYelpID()!=null&&invitation.getYelpID().length()>0){ 
      viewHolder.votedIcon.setVisibility(View.VISIBLE); 
     }else{ 
      viewHolder.votedIcon.setVisibility(View.GONE); 
     } 
    } 

    @Override 
    public int getItemCount() { 
     return list.size(); 
    } 

    public Object getItem(int position) { 
     return position; 
    } 


    public long getItemId(int position) { 
     return position; 
    } 

    public static class ViewHolderItem extends RecyclerView.ViewHolder { 
     public ImageView votedIcon; 
     public ImageView userIcon; 
     Context mContext; 
     int position; 
     public ViewHolderItem(Context mContext,View itemView) { 
      super(itemView); 
      this.mContext = mContext; 
      userIcon=(ImageView)itemView.findViewById(R.id.userIcon); 
      votedIcon = (ImageView)itemView.findViewById(R.id.votedIcon); 
     } 
    } 

} 

здесь расположение элемента R.layout.item_grid для адаптера:

<?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_gravity="center" 
       android:gravity="center"> 


     <ImageView 
      android:background="@drawable/white_circle" 
      android:padding="3dp" 
      android:id="@+id/userIcon" 
      android:layout_width="50dp" 
      android:layout_height="50dp"/> 

     <ImageView 
      android:id="@+id/votedIcon" 
      android:layout_width="20dp" 
      android:layout_height="20dp" 
      android:src="@drawable/icon_voted"/> 
</RelativeLayout> 
+0

Почему вы гнездились ** 2 ** RelativeLayouts? ** 1 ** более чем достаточно. –

+0

@ FrankN.Stein для добавления white_circle ниже. Изображение пользователя – NickUnuchek

+0

Вы издеваетесь надо мной. –

ответ