2016-08-06 79 views
1

這是愚蠢的問題,但我無法找到我做錯了什麼。意外的空間進入recyclerview項目

我正在使用FirebaseRecyclerAdapter填充recyclerView,但有意想不到的空間正在與項目。 enter image description here

片段類:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_tags, container, false); 

    mProgressBar = (ProgressBar)view.findViewById(R.id.progressBar); 
    mTagsRecyclerView = (RecyclerView) view.findViewById(R.id.tagsRecyclerView); 
    mLinearLayoutManager = new LinearLayoutManager(getContext()); 

    mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference(); 
    mFirebaseAdapter = new FirebaseRecyclerAdapter<Tags, TagsViewHolder>(
      Tags.class, 
      R.layout.item_message, 
      TagsViewHolder.class, 
      mFirebaseDatabaseReference.child("tags")) { 

     @Override 
     protected void populateViewHolder(TagsViewHolder viewHolder, Tags tags, int position) { 
      mProgressBar.setVisibility(ProgressBar.INVISIBLE); 
      viewHolder.tagTextView.setText(tags.getTagname()); 
      viewHolder.usrTextView.setText(tags.getUserid()); 
     } 
    }; 


    mFirebaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { 
     @Override 
     public void onItemRangeInserted(int positionStart, int itemCount) { 
      super.onItemRangeInserted(positionStart, itemCount); 
     } 
    }); 

    mTagsRecyclerView.setLayoutManager(mLinearLayoutManager); 
    mTagsRecyclerView.setAdapter(mFirebaseAdapter); 

    mTagsRecyclerView.addOnItemTouchListener(new RecyclerViewItemClickListener(getContext(), 
      new RecyclerViewItemClickListener.OnItemClickListener() { 
       @Override public void onItemClick(View v, int position) { 
        //TODO: 
        // do something on item click 
        Log.d("Item clicked at",Integer.toString(position)); 
       } 
      })); 
    return view; 
} 

片段佈局:

<FrameLayout 
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" 
tools:context="com.helpplusapp.amit.helpplus.TagsFragment"> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/tagsRecyclerView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 
<ProgressBar 
    style="?android:attr/progressBarStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/progressBar" 
    android:layout_gravity="center" 
    /> 

列表項的佈局:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:divider="@drawable/view_separator" 
    android:paddingTop="@dimen/margin_default" 
    android:paddingBottom="@dimen/margin_default" 
    android:showDividers="end"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:id="@+id/tagTextView" 
      /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:id="@+id/usrTextView" 
      /> 

</LinearLayout> 

請建議。

回答

6

在listitemlayout XML文件進行線性佈局的高度來包裝內容

+0

是啊說得對了..謝謝了很多@Moulesh –

1

在列表項的佈局改變線性佈局機器人:身高=「WRAP_CONTENT」

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
android:divider="@drawable/view_separator" 
android:paddingTop="@dimen/margin_default" 
android:paddingBottom="@dimen/margin_default" 
android:showDividers="end"> 


    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:id="@+id/tagTextView" 
     /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:id="@+id/usrTextView" 
     /> 
</LinearLayout> 
+0

難過...謝謝 –

1

隨着推出了支持庫23.2谷歌改變回收站視圖:

LayoutManager API:自動測量!這允許RecyclerView根據其內容的大小自行決定其大小。這意味着 以前不可用的方案,例如使用WRAP_CONTENT爲 尺寸的RecyclerView,現在是可能的。您會發現佈局管理器中的所有內置 現在都支持自動測量。由於此更改, 請確保仔細檢查您的項目視圖的佈局參數: 現在將會完全遵守之前忽略的佈局參數(例如滾動方向爲 的MATCH_PARENT)。

Source

您需要更改項目的高度爲wrap_content代替match_parent。

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:divider="@drawable/view_separator" 
    android:paddingTop="@dimen/margin_default" 
    android:paddingBottom="@dimen/margin_default" 
    android:showDividers="end"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:id="@+id/tagTextView" 
      /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:id="@+id/usrTextView" 
      /> 

</LinearLayout>