Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

30.03.2015, 20:26. Просмотров 579. Ответов 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 не перехватывает скролл вниз) А вот сделать два варианта одновременно у меня, увы, не выходит.
Есть какие нибудь идеи?
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2015, 20:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос FloatingButton + RecyclerView+ RefreshLayout (Программирование Android):

Advanced RecyclerView и Expandable RecyclerView - Программирование Android
Сделал expandable recycler view на основе advancedRecyclerView сборочки, но не важно это думаю, наследуется от обычного RecyclerView. ...

RecyclerView внутри recyclerView - Программирование Android
Добрый день. Хочу сделать список recyclerView c горизонтальной прокруткой, который отображает допустим 20 элементов(card). Т.е....

RecyclerView - Программирование Android
Скажите что делаю не так. Цель: выводить содержимое бд заголовок, текст и т.п. Как я делал, точнее по гайдам. Тут из базы передаю...

RecyclerView click - Программирование Android
Добрый ночи. ребята как при клики зафиксировать блок. recView.addOnItemTouchListener( new...

Recyclerview-stickyheaders - Программирование Android
Подскажите кто пожалуйста как сделать recyclerview-stickyheaders как в ссылке только с cardView. ...

Retrofit Recyclerview - Программирование Android
Здравствуйте, уважаемые форумчане. Помогите добавить onScroll в RecyclerView. Вот код public class MainActivity extends...

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

RecyclerView и SQLite - Программирование Android
Нужно наполнить Recycler View данными из базы данных. Единственное решение, которое я нашел в сети, это достать данные из базы, перекинуть...

RecyclerView и SQLite - Программирование Android
Здравствуйте делал по этому гайду RecyclerView http://www.vogella.com/tutorials/AndroidRecyclerView/article.html#exercise_recycleview . У...

RecyclerView Adapter - Программирование Android
Пример классического создания адаптера RecyclerView public class UserDialogRecyclerAdapter extends...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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