Изменение количества столбцов с помощью GridLayoutManager и RecyclerView для экрана автоматической подгонки - PullRequest
0 голосов
/ 29 августа 2018

Я использую 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" . но я не работаю ....

Не могли бы вы сказать мне, как решить эту проблему? Вот другой вопрос ...

1 Ответ

0 голосов
/ 29 августа 2018

Проверьте это для лучшего решения

Здесь вы можете создать один класс для возврата 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())));
...