Полоса прокрутки на верхней стороне в горизонтальном представлении RecyclerView

Я работаю над простой демонстрацией горизонтального RecyclerView.

Я хочу отобразить полосу прокрутки вместе с видом на реселлер. Итак, я добавил android:scrollbars="horizontal" а также android:scrollbarSize="5dp" в XML.

Я могу получить полосу прокрутки, но она показывает внизу. Чего я хочу добиться, так это показать это наверху. Я нашел несколько вопросов, подобных этому, но ни один из них не относится к горизонтальной обратной связи recyclerView + top side.

Вот код, который я пробовал до сих пор:

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:isScrollContainer="false"
    android:orientation="horizontal"
    android:scrollbars="horizontal"
    android:scrollbarSize="5dp"
    android:visibility="visible" />

Изображение, которое описывает мой запрос

Спасибо!

1 ответ

Я искал пару часов, но ничего не нашел по вашему требованию. Но есть некоторые трики или хакерский код, который мы можем получить в соответствии с вашими требованиями.

Установите RecyclerView, как показано ниже в вашем XML-файле.

<android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbarAlwaysDrawHorizontalTrack="true"
        android:scrollbarSize="10dp"
        android:scrollbarStyle="outsideInset"
        android:scrollbarThumbVertical="@color/black"
        android:scrollbars="horizontal"
        android:verticalScrollbarPosition="right"/>

Разместите ваши данные в обратном порядке в вашем Списке или ArrayList, потому что нам нужно повернуть представления переработчика, чтобы при повороте наши данные отображались в порядке ASEC.

   //call this method for set recyclerview
   private void setRecyclerView()
    {
        //Please make sure with your item that it will be inserted in revers order then an then it will be working
        ArrayList<String> itemList = new ArrayList<>();
        for (int i = 50; i > 0; i--){
            itemList.add("item " + i);
        }

        ContainerAdapter adapterMessage = new ContainerAdapter(MainActivity.this, itemList);
        if (adapterMessage != null)
        {
            rvItemList.setHasFixedSize(true);
            rvItemList.setLayoutManager(new LinearLayoutManager(MainActivity.this,
                    LinearLayoutManager.HORIZONTAL, false);
            rvItemList.setItemAnimator(new DefaultItemAnimator());
            rvItemList.setAdapter(adapterMessage);
            //here is the main line for your requirement
            rvItemList.setRotation(180);
            adapterMessage.notifyDataSetChanged();
        }

Теперь, наконец, в вашем адаптере поверните все ваше представление в обратном направлении, как показано ниже.

public class ViewHolder extends RecyclerView.ViewHolder
    {
        TextView txt_name;
        public ViewHolder(View itemView) {
            super(itemView);
            txt_name = (TextView) itemView.findViewById(R.id.txt_name);
            // here you need to revers rotate your view because your recyclerview is already rotate it so your view is also rotated and you need to revers rotate that view
            txt_name.setRotation(-180);
        }
    }

Если вы делаете код, как указано выше, то ваш элемент и его вывод выглядят так :

Пожалуйста, убедитесь, что вы делаете такой код, потому что android не будет нести ответственность за этот код, но согласно вашему требованию вы можете сделать это следующим образом.

Другие вопросы по тегам