Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Vadik052
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 11
#1

FloatingButton + RecyclerView+ RefreshLayout - Программирование Android

30.03.2015, 20:26. Просмотров 541. Ответов 2
Метки нет (Все метки)

Имеется xml:
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!--RefreshLayout-->
<android.support.v4.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    android:id="@+id/refresh_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!--FrameLayout-->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <!--RecyclerView-->
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycler_view"
            android:scrollbars="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
        <!--FloatingActionButton-->
            <com.melnykov.fab.FloatingActionButton
                android:id="@+id/floating_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|right"
                android:layout_margin="16dp"
                android:src="@drawable/ic_add_white_24dp"
                fab:fab_colorNormal="@color/primary"
                fab:fab_colorPressed="@color/primary_pressed"
                fab:fab_colorRipple="@color/ripple" />
    </FrameLayout>
</android.support.v4.widget.SwipeRefreshLayout>

Есть класс:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
    SwipeRefreshLayout refresh_view;
    private RecyclerView recycler_view;
    private RecyclerView.LayoutManager layout_manager;
    private Adapter_Card_View adapter_card_view;
    public static String[] source_image = {
            "http://www.example.ru/img.jpg" };
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_room_fond, container, false);
        //RecyclerView
        recycler_view = (RecyclerView) rootView.findViewById(R.id.recycler_view);
        recycler_view.setHasFixedSize(true);
        //Layout для RecyclerView
        layout_manager = new LinearLayoutManager(getActivity());
        recycler_view.setLayoutManager(layout_manager);
        //Adapter
        adapter_card_view = new Adapter_Card_View();
        //Listener
        adapter_card_view.Set_Card_Listener(new Adapter_Card_View.Card_Listener(){
            @Override
            public void Item_Click (int position) {
                Toast.makeText(getActivity(), "Нажатие на карточку: " + position, Toast.LENGTH_SHORT).show();
            }
        });
        //Добавление карточек
        Add_Card();
        //Назначение RecyclerView Adapter
        recycler_view.setAdapter(adapter_card_view);
        //Добавление Floating Button
        FloatingActionButton floating_button = (FloatingActionButton) rootView.findViewById(R.id.floating_button);
        floating_button.attachToRecyclerView(recycler_view);
        //Добавление SwipeRefreshLayout
        refresh_view = (SwipeRefreshLayout) rootView.findViewById(R.id.refresh_view);
        refresh_view.setRefreshing(false);
        refresh_view.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener(){
            @Override
            public void onRefresh() {
                Toast.makeText(getActivity(), "Обновляем: ", Toast.LENGTH_SHORT).show();
                refresh_view.setRefreshing(true);
                refresh_view.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getActivity(), "Завершаем", Toast.LENGTH_SHORT).show();
                        refresh_view.setRefreshing(false);
                    }
                }, 3000);
            }
        });
        //---------
        recycler_view.setOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
            }
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                int topRowVerticalPosition =
                        (recycler_view == null || recycler_view.getChildCount() == 0) ?
                                0 : recycler_view.getChildAt(0).getTop();
                refresh_view.setEnabled(topRowVerticalPosition >= 0);
            }
        });
        return rootView;
    }
 
    //Добавление карточек
    private void Add_Card() {
        for (int i = 0; i < Main.titleList.size(); i++) {
            String s = Main.titleList.get(i);
            //mDataSet.add(i, s);
            adapter_card_view.Add_Item(i, source_image[0], s);
            recycler_view.scrollToPosition(0);
        }
    }
}

Вопрос: Получается сделать только два варианта: Либо floating_button появляется/исчезает, либо refresh_view, обновляет "Как надо"(То есть recyler_view свободно листается, refresh_view не перехватывает скролл вниз) А вот сделать два варианта одновременно у меня, увы, не выходит.
Есть какие нибудь идеи?
Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2015, 20:26     FloatingButton + RecyclerView+ RefreshLayout
Посмотрите здесь:

Recyclerview click fixed - Программирование Android
Добрый день. у меня в Recyclerview выводится список контактов, как сделать чтобы к при клике на него она фиксировалась грубо...

RecyclerView фиксированый height - Программирование Android
Мне кажется много кто встречался с данной проблемой. у меня есть корзина, в ней RecyclerView с фиксированой высотой. (что бы там 3...

Пример fragments and RecyclerView - Программирование Android
может кто-то показать пример проекта как на фото, с 2 активити, и 2 фрагментами, слева список RecyclerView а справа какая-то инфа, при...

RecyclerView использование ItemDecoration - Программирование Android
Здравствуйте! Никак не пойму, как использовать ItemDecoration не для всех элементов, а только между типами &quot;категория&quot; и &quot;пункт&quot; (то...

Принцип работы RecyclerView - Программирование Android
Можете объяснить принципп работы RecyclerView во время скроллинга? Как он заполняется элементами? Сколько элементов находится в каждый...

Обработка кликов в RecyclerView - Программирование Android
Доброго времени суток господа. Сделал обработку кликов по вот этому примеру ...

Заполнить RecyclerView из Cursor - Программирование Android
Ребят подскажите плз, есть ли способы закинуть данные с бд типа Cursor в список ResyclerView? Или нужно обязательно переводить данные в...

Android fragment + recyclerView - Программирование Android
Всем привет, помогите написать простой пример такой программы: Есть 1 активность (при запуске на ней отображен фрагмент1, в котором...

RecyclerView и сетевые запросы - Программирование Android
Есть RecyclerView внутри карточки и для каждой карточки при отрисовке вызывается метод API для получения данных. После успешного получения...

Анимация FloatingActionButton в RecyclerView - Программирование Android
Хочу сделать анимацию появления и скрытия Floating Action Button при скроле RecyclerView. Сделал по этой статье. Работает, но когда в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
31.03.2015, 21:21     FloatingButton + RecyclerView+ RefreshLayout #2
что-то ничерта не понял, давай помедленее и по-подробнее. чего хочешь сделать?
Vadik052
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 11
31.03.2015, 23:26  [ТС]     FloatingButton + RecyclerView+ RefreshLayout #3
Есть RecyclerView, внутри него floatingButton, все это дело оборачивает RefreshLayout(Да бы ReculerView обновлялся) FloatingButton должна быть "плавающей" (листнул список вверх - кнопка скрылась, вниз - появилась)
Так же имеет место быть следующая ситуация - пролистаем список RecyclerView до конечного, нижнего элемента - захотим вернуться в начало, начинаем пролистывать вниз(от верхнего края устройства к нижнему) - и тут пролистать не удается, мешает элемент RefreshLayout(ведь он так же вызывается путем пролистывания от верхнего края устройства к нижнему) В итоге список стоит - элемент обновления (в моем случае круг с стрелков внутри) вылезает) Все это дело я поправил (есть куча вариантов в интернете, один из них в предоставленном мною коде(onScrolled)), но при этом кнопка не "плавает". А вот сделать как надо, увы, не выходит.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru