2017-04-07 135 views
0

我想使用RecyclerView来显示联系人的水平列表。我花了好几个小时才发现我的错误,我真的不明白为什么这会继续发生。我的应用程序是类似Tinder的。Android RecyclerView没有显示正确的xml

我行项目:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="80dp" 
    android:layout_height="80dp" 
    xmlns:tool="http://schemas.android.com/tools" 
    android:background="@color/white" 
    android:layout_margin="8dp"> 

    <TextView 
     android:id="@+id/tv_conversation_name" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_alignParentBottom="true" 
     android:textAlignment="center" 
     android:textColor="@color/black" 
     android:textSize="4pt" 
     tool:text="Name Name"/> 

    <ImageView 
     android:id="@+id/iv_conversation_avatar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scaleType="centerCrop" 
     android:layout_margin="2dp" 
     android:src="@drawable/photo1" 
     android:layout_above="@id/tv_conversation_name"/> 
</RelativeLayout> 

This is what happen

I did a layout like this one in a other fragment

我的适配器:

public class ConversationAdapter extends RecyclerView.Adapter<ConversationAdapter.ConversationViewHolder>{ 
    private List<Conversation> conversationList = new ArrayList<>(); 

    public class ConversationViewHolder extends RecyclerView.ViewHolder { 
     public TextView title; 
     public ImageView avatar; 

     ConversationViewHolder(View view) { 
      super(view); 
      title = (TextView) view.findViewById(R.id.tv_conversation_name); 
      avatar = (ImageView) view.findViewById(R.id.iv_conversation_avatar); 
     } 
    } 

    public ConversationAdapter(List<Conversation> conversationList) { 
     this.conversationList = conversationList; 
    } 

    @Override 
    public ConversationViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_conversation, parent, false); 
     return new ConversationViewHolder(itemView); 
    } 

    @Override 
    public void onBindViewHolder(ConversationViewHolder holder, int position) { 
     Conversation conversation = conversationList.get(position); 
     holder.title.setText(conversation.getName()); 

     byte[] decodedByteArray = android.util.Base64.decode(conversation.getImage(), Base64.DEFAULT); 
     holder.avatar.setImageBitmap(BitmapFactory.decodeByteArray(decodedByteArray, 0, decodedByteArray.length)); 
    } 

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

我如何配置我的RecyclerView:

conversationAdapter = new ConversationAdapter(conversationList); 
RecyclerView.LayoutManager mLayoutManagerHorizontal = new LinearLayoutManager(getActivity().getApplicationContext(),LinearLayoutManager.HORIZONTAL, false); 
rvConversation.setLayoutManager(mLayoutManagerHorizontal); 
rvConversation.setItemAnimator(new DefaultItemAnimator()); 
rvConversation.setAdapter(conversationAdapter); 

回答

0

它看起来像RelativeLayout的在你的行项目文件的宽度和高度仅为80dp,我不认为是你想要的这里。尝试设置这些值来“match_parent”,像这样:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
xmlns:tool="http://schemas.android.com/tools" 
android:background="@color/white" 
android:layout_margin="8dp"> 

;或用“WRAP_CONTENT”,这取决于你正在努力实现的外观。

+0

非常感谢杰森!这解决了我的问题:) –