Полоса прокрутки на верхней стороне в горизонтальном представлении 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 не будет нести ответственность за этот код, но согласно вашему требованию вы можете сделать это следующим образом.