Java 使用GridLayoutManager和RecyclerView更改自动调整屏幕的列数
我正在片段中使用Recyclerview。。。 在我的片段中,我以以下方式设置GridLayout:Java 使用GridLayoutManager和RecyclerView更改自动调整屏幕的列数,java,android,android-recyclerview,grid-layout,Java,Android,Android Recyclerview,Grid Layout,我正在片段中使用Recyclerview。。。 在我的片段中,我以以下方式设置GridLayout: myTV.setLayoutManager(new GridLayoutManager(getActivity(),3)); 代码显示,对于横向和纵向模式,只有3列 但我想为用户旋转手机/平板电脑时的屏幕设置最大列数。 这是我的PeopleFragment.java public class PeopleFragment extends Fragment { View v;
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;
}
}
公共类PeopleFragment扩展了片段{
观点五;
列出名单;
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
v=充气机。充气(右布局。碎片\人,容器,假);
listPeople=newArrayList();
添加(新人物(“1-name”,R.drawable.image1));
添加(新人物(“2-name”,R.drawable.image2));
添加(新人物(“3-name”,R.drawable.image3));
添加(新人物(“4-name”,R.drawable.image4));
添加(新人物(“5-name”,R.drawable.image5));
添加(新人物(“6-name”,R.drawable.image6));
添加(新人物(“7-name”,R.drawable.image7));
RecyclerView myTV=(RecyclerView)v.findViewById(R.id.RecyclerView\u id);
RecycleServiceAdapterPDF myAdapter=新的RecycleServiceAdapterPDF(getActivity(),listPeople);
setLayoutManager(新的GridLayoutManager(getActivity(),3));
myTV.setAdapter(myAdapter);
返回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\u-fit”。
但我不工作
你能告诉我如何解决这个问题吗?这里有不同的问题…
在这里,您可以为returnno 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())));
在这里,您可以为returnno 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())));
可能是@MohamedMohaidenah的副本谢谢你的链接。但我无法清除答案,放在哪里?检查我的答案将帮助你。。!可能是@MohamedMohaidenah的副本谢谢你的链接。但我无法清除答案,放在哪里?检查我的答案将帮助你。。!欢迎乐于帮助快乐编码:)欢迎乐于帮助快乐编码:)