Recyclerview未全屏显示

时间:2017-02-27 17:57:32

标签: java android android-layout

Recyclerview未全屏显示。下面是布局文件和我编写的代码。执行后,显示内容如下图所示。高度仅是突出显示的部分。我希望内容全屏。 我剩余的内容位于可滚动的突出显示区域内。我希望内容以全屏显示。任何帮助都会有所帮助。

enter image description here

布局文件:

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

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

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="true"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:clickable="true">

        <TextView
            android:id="@+id/title"
            android:textSize="16dp"
            android:textStyle="bold"
            android:layout_alignParentTop="true"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/genre"
            android:layout_below="@id/title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/year"
            android:layout_width="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_height="wrap_content" />

    </RelativeLayout>
</LinearLayout>
  • 代码:

    import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.List;

    public class setSearchData扩展了RecyclerView.Adapter {

    private List<SearchDisplayContents> moviesList;
    
    public class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView title, year, genre;
    
        public MyViewHolder(View view) {
            super(view);
            title = (TextView) view.findViewById(R.id.title);
            genre = (TextView) view.findViewById(R.id.genre);
            year = (TextView) view.findViewById(R.id.year);
        }
    }
    
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.activity_searchresults, parent, false);
    
        return new MyViewHolder(itemView);
    }
    
    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        SearchDisplayContents movie = moviesList.get(position);
        holder.title.setText(movie.getTitle());
        holder.genre.setText(movie.getGenre());
        holder.year.setText(movie.getYear());
    }
    
    @Override
    public int getItemCount() {
        return moviesList.size();
    }
    

    }

    调用功能代码:

    列出movieList = new ArrayList&lt;&gt;();         RecyclerView recyclerView =(RecyclerView)findViewById(R.id.recycler_view);

    setSearchData mAdapter = new setSearchData(movieList);
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(mLayoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setAdapter(mAdapter);
    
    SearchDisplayContents movie = new SearchDisplayContents("Mad Max: Fury Road", "Action & Adventure", "2015");
    movieList.add(movie);
    
    movie = new SearchDisplayContents("Inside Out", "Animation, Kids & Family", "2015");
    movieList.add(movie);
    
    mAdapter.notifyDataSetChanged();
    

4 个答案:

答案 0 :(得分:1)

您应该为查看者使用不同的布局。拿你在那里的RelativeLayout,把它剪掉,把它放在不同的xml文件中,然后传递给onCreateViewHolder。

答案 1 :(得分:0)

您应该为查看者使用不同的布局。拿你在那里的RelativeLayout,把它剪掉,把它放在不同的xml文件中,然后传递给onCreateViewHolder。

答案 2 :(得分:0)

从查看代码 - 看起来预览屏幕截图中的内容与您静态定义的RelativeLayout内的内容相同。

您的方法存在问题。您正在引用RelativeLayout(在与RecylerView相同的xml层次结构中)作为RecyclerView.Adapter中的CellViewHolder。我个人的方法是为单元格视图创建一个单独的xml布局。

按照本指南,它非常详细: https://guides.codepath.com/android/using-the-recyclerview

答案 3 :(得分:0)

以上编码有一些工作使用不同的布局,一个用于Recycleview,另一个用于列表中的内容

main_layout.xml

<?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"
android:orientation="vertical">

  <android.support.v7.widget.RecyclerView
    android:id="@+id/uslist"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginTop="@dimen/_49sdp"
    android:divider="@android:color/transparent" />
</RelativeLayout>

list_content.xml

<?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:focusable="true"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:clickable="true">

    <TextView
        android:id="@+id/title"
        android:textSize="16dp"
        android:textStyle="bold"
        android:layout_alignParentTop="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/genre"
        android:layout_below="@id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/year"
        android:layout_width="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_height="wrap_content" />

</RelativeLayout>

Adapter.java

public class yourAdapter extends RecyclerView.Adapter<yourAdapter .SimpleViewHolder> {


ArrayList<UsageRPDetails> mylist;
private Context mContext;

public yourAdapter (Context context, ArrayList<yourArray or model> checklist) {
    mContext = context;
    mylist = checklist;
}

@Override
public yourAdapter .SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_content, parent, false);
    return new yourAdapter .SimpleViewHolder(view);
}

@Override
public void onBindViewHolder(final yourAdapter .SimpleViewHolder holder, final int position) {
    holder.title.setText();
    holder.year.setText();
    holder.genre.setText();


}

@Override
public long getItemId(int i) {
    return 0;
}

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

@Override
public int getItemViewType(int i) {
    return 0;
}

public static class SimpleViewHolder extends RecyclerView.ViewHolder {
    @Bind(R.id.title)
    TextView title;
    @Bind(R.id.genre)
    TextView genre;
@Bind(R.id.year)
    TextView year;


    public SimpleViewHolder(View itemView) {
        super(itemView);
        title= (TextView) itemView.findViewById(R.id.title);
        genre= (TextView) itemView.findViewById(R.id.genre);
        genre= (TextView) itemView.findViewById(R.id.genre);


    }
}

}

还为Activity编写一个java文件,该文件调用此适配器类并在此活动中调用recycleview