![](/img/trans.png)
[英]Android RecyclerView GridLayoutManager changing item height make spaces between columns
[英]Changing number of columns with GridLayoutManager and RecyclerView for Auto Fit Screen
我在片段中使用Recyclerview ...在片段中,我通過以下方式設置GridLayout:
myTV.setLayoutManager(new GridLayoutManager(getActivity(),3));
代碼說,橫向和縱向模式只有3列 。
但是我想在用戶旋轉手機/平板電腦時為屏幕顯示設置最大列數....
這是我的PeopleFragment.java
public class PeopleFragment extends Fragment {
View v;
List<People> listPeople;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
v= inflater.inflate(R.layout.fragment_people,container,false);
listPeople = new ArrayList<>();
listPeople.add(new People("1-name",R.drawable.image1));
listPeople.add(new People("2-name",R.drawable.image2));
listPeople.add(new People("3-name",R.drawable.image3));
listPeople.add(new People("4-name",R.drawable.image4));
listPeople.add(new People("5-name",R.drawable.image5));
listPeople.add(new People("6-name",R.drawable.image6));
listPeople.add(new People("7-name",R.drawable.image7));
RecyclerView myTV= (RecyclerView) v.findViewById(R.id.recyclerview_id);
RecyclerViewAdapterPDF myAdapter = new RecyclerViewAdapterPDF(getActivity(),listPeople);
myTV.setLayoutManager(new GridLayoutManager(getActivity(),3));
myTV.setAdapter(myAdapter);
return v;
}
}
fragment_people.java
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview_id"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
我使用了android:numColumns =“ auto_fit” 。 但我沒工作...
你能告訴我如何解決這個問題嗎?這里是另一個問題...
在這里,您可以創建一個類以不返回no of columns
或直接使用方法。
將此方法添加到您的片段類中。
public int calculateNoOfColumns(Context context) {
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
int noOfColumns = (int) (dpWidth / 180);
return noOfColumns;
}
並將您的適配器代碼更改為
myTV.setLayoutManager(new GridLayoutManager(getActivity(),calculateNoOfColumns(getActivity())));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.