Как установить размер элемента в зависимости от размера экрана? - PullRequest
3 голосов
/ 30 марта 2019

Я хочу, чтобы мои RecyclerView ширина и высота элемента были равны, и меняю их размер динамически для размера экрана?

как мне это сделать, совет или образец кода?

Вот мой код:

    mrv = findViewById(R.id.rv_segments);
    list = new ArrayList<>();
    mAdapter = new SegmentsAdapter(this, list,station.getWidthCount());

    //mAdapter.setOnItemClickListener(this);

    mLayoutManager = new LinearLayoutManager(getApplicationContext());
    mLayoutManager = new GridLayoutManager(getActivity(), station.getWidthCount());


    mrv.setLayoutManager(mLayoutManager);
    mrv.setAdapter(mAdapter);

и вот мой адаптер:

public SegmentsAdapter.BaseHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view1 = LayoutInflater.from(context).inflate(R.layout.recyler_item_segments,parent,false);
    BaseHolder viewHolder1 = new BaseHolder(view1);
    return viewHolder1;
}

И мой пункт утилизации xml, как:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/custom_ln_border"
    android:padding="2dp">
<LinearLayout
    android:id="@+id/ln"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:scaleType="centerCrop"
    android:orientation="horizontal"
    android:background="@color/menu3"
    />
</LinearLayout>

Ответы [ 2 ]

1 голос
/ 30 марта 2019

Ваше Recyclerview должно иметь LayoutManager с указанным в нем размером интервала столбца.что-то вроде этого:

mList.setLayoutManager(new GridLayoutManager(getContext(), 2));

Так что теперь вам просто нужно управлять высотой предметов.право?Это будет делать:

@Override
public myViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  View myView = inflater.inflate(R.layout.item_home, parent, false);
  GridLayoutManager.LayoutParams params = (GridLayoutManager.LayoutParams) myView.getLayoutParams();
  params.height = (parent.getMeasuredHeight() / 2) - dim24;
  myView.setLayoutParams(params);
  return new myViewHolder(myView);
}

Итак.это (parent.getMeasuredHeight() / 2) - dim24 - это место, где вы можете настроить вид "ВЫСОТА"

А dim24 - это просто целое число отступа, от него можно избавиться

Обратите внимание, что я использовал "2" столбцы такЯ разделил высоту элемента на «2»

1 голос
/ 30 марта 2019

Использование Pls ConstraintLayout внутри элемента повторного просмотра. Ограничения обновляются и лучше, чем относительные и линейные макеты. Макет ограничения автоматически настраивается на основе экранов ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...