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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Adeveloper
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 6
#1

OnTouch траблы с viewflipper и viewpager - Программирование Android

01.03.2013, 18:44. Просмотров 1753. Ответов 6
Метки нет (Все метки)

Доброго всем времени суток!
Помогите разобраться, в чем беда.

Пытаюсь использовать для свайпинга viewflipper или viewpager. в обоих случаях получаю одну траблу. если в качестве страниц для перелистывания использовать лайауты с какими-то элементами (кнопками и т.д.) и присвоить обработчик OnTouchListener какому-то компоненту(view) на лайауте, то при нажатии на этот view не вызывается обработчик касания.
и еще возникают трудности при присваивании обработчика компоненту на лайауте который в данный момент не установлен функцией setContent.
можно установить обработчик флипперу, пэйджеру, их дочерним компонентам (в моем случае лайаутам, которые перелистываются), а компонентам дочерних кмпонентов уже нельзя. то есть нельзя написать так
Код
flipper.getChildAt(0).getChildAt.setOnTTouchListener(0)
чтобы установить обработик касания на, например, кнопку на одном из лайаутов флиппера или пэйджера.
вот у меня вопрос, как корректно присвоить обработчик касания в таком случае?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2013, 18:44     OnTouch траблы с viewflipper и viewpager
Посмотрите здесь:
Android Тормозит ViewFlipper
registerForContextMenu и ontouch Android
Android OnTouch и onLongClick
Android OnTouch на элементе меню
Программный вызов onTouch Android
Android Вылет onTouch(), перетаскивание
OnTouch узнать цвет пикселя Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lavan
51 / 51 / 1
Регистрация: 21.03.2009
Сообщений: 371
01.03.2013, 19:39     OnTouch траблы с viewflipper и viewpager #2
если я правильно понял,то:
у меня есть ViewPager он содержит GridView в GridView есть ImageView так задаю обработку нажатия по ImageView
Java
1
2
3
4
5
6
GridView gv = (GridView)v.findViewById(id);
gv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                ImageView vi = (ImageView)v;
            }
        });
добавляю GridView to ViewPager
Java
1
2
3
4
5
6
7
8
9
ViewPager vp = (ViewPager)findViewById(R.id.v4);
        List<View> lv = new ArrayList<View>();
        lv.add(gv);
                lv.add(gv2);
                lv.add(gv3);
        WPageAdapter wp = new WPageAdapter(lv,this);
        vp.setAdapter(wp);
        vp.setCurrentItem(1);
        vp.setOnPageChangeListener(this);
Adeveloper
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 6
01.03.2013, 23:49  [ТС]     OnTouch траблы с viewflipper и viewpager #3
Цитата Сообщение от lavan Посмотреть сообщение
если я правильно понял,то:
у меня есть ViewPager он содержит GridView в GridView есть ImageView так задаю обработку нажатия по ImageView
Java
1
2
3
4
5
6
GridView gv = (GridView)v.findViewById(id);
gv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                ImageView vi = (ImageView)v;
            }
        });
добавляю GridView to ViewPager
Java
1
2
3
4
5
6
7
8
9
ViewPager vp = (ViewPager)findViewById(R.id.v4);
        List<View> lv = new ArrayList<View>();
        lv.add(gv);
                lv.add(gv2);
                lv.add(gv3);
        WPageAdapter wp = new WPageAdapter(lv,this);
        vp.setAdapter(wp);
        vp.setCurrentItem(1);
        vp.setOnPageChangeListener(this);
не могли бы вы более детально обьяснить
lavan
51 / 51 / 1
Регистрация: 21.03.2009
Сообщений: 371
02.03.2013, 12:27     OnTouch траблы с viewflipper и viewpager #4
у меня есть ViewPager в котором находится GredView а в GredView находятся ImageView.
что бы поместить нужный компонент в ViewPager надо наследоваться от PagerAdapter. чтобы отлавливать события ViewPager(листание страниц) надо реализовать интерфейс ViewPager.OnPageChangeListener
Java
1
2
3
4
5
6
7
8
9
10
ViewPager vp = (ViewPager)findViewById(R.id.v4);
        List<View> lv = new ArrayList<View>();//что будет храниться
        lv.add(gv);//0
                lv.add(gv2);//1
                lv.add(gv3);//2
//всего будет 3 страницы
        WPageAdapter wp = new WPageAdapter(lv,this);//класс расширяющий PagerAdapter
        vp.setAdapter(wp);
        vp.setCurrentItem(1);//какая страница появится при загрузке
        vp.setOnPageChangeListener(Class implements  ViewPager.OnPageChangeListener);//
для помещения ImageView в GredView наследуетесь от BaseAdapter
Adeveloper
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 6
02.03.2013, 22:19  [ТС]     OnTouch траблы с viewflipper и viewpager #5
Попытаюсь спросить на примере.
Вот мой исходник:

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
public class MyClass extends Activity implements OnTouchListener{
    RelativeLayout secondl;
        DigitalClock clock;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.second);
            clock=(DigitalClock)findViewById(R.id._clock);
                clock.setOnTouchListener(this);       
            
            LayoutInflater inflater = LayoutInflater.from(this);
            List<View> pages = new ArrayList<View>();
            
            View page = inflater.inflate(R.layout.first, null);
            pages.add(page);
            
            page = inflater.inflate(R.layout.second, null);
            pages.add(page);
            
            page = inflater.inflate(R.layout.third, null);
            pages.add(page);
            
            SamplePagerAdapter pagerAdapter = new SamplePagerAdapter(pages);
            ViewPager viewPager = new ViewPager(this);
            viewPager.setAdapter(pagerAdapter);
            viewPager.setCurrentItem(1);
               
             setContentView(viewPager);
             
           
        }
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int i=v.getId();
            return false;
        }
У меня два вопроса.
1. Clock у меня находится в лайауте с id second.Почему я не могу присвоить обработчик клоку или этому лайауту, пока не вызову setContentView(R.layout.second)?
2. Почему при нажатии на часы не срабатывает событие OnTouch? На моем примере мне может кто-нибудь обьяснить?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.03.2013, 23:02     OnTouch траблы с viewflipper и viewpager #6
Цитата Сообщение от Adeveloper Посмотреть сообщение
1. Clock у меня находится в лайауте с id second.Почему я не могу присвоить обработчик клоку или этому лайауту, пока не
Java
1
вызову setContentView(R.layout.second)?
Java
1
2
3
page = inflater.inflate(R.layout.second, null);
View clock = page.findViewById(R.id.clock);
clock.setOnClickListener(...);
Добавлено через 2 минуты
Java
1
2
3
page = inflater.inflate(R.layout.second, null);
View clock = page.findViewById(R.id.clock);
clock.setOnClickListener(...);
это решит оба вопроса.

Добавлено через 1 минуту
точнее
Java
1
clock.setOnTouchListener(this);
Добавлено через 44 секунды
а еще не забывайте, что если clock это лаяут на котором находятся другие View, то эти View могут обработать тач и этот тач уже не получит ваш лаяут.

Добавлено через 23 минуты
сори, еще нужен каст к ViewGroup

Java
1
View clock = ((ViewGroup)page).findViewById(R.id.clock);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2013, 23:51     OnTouch траблы с viewflipper и viewpager
Еще ссылки по теме:
Одновременное срабатывание onTouch и onItemLongClick Android
OnTouch из активити для View Android
Android Использование разных onTouch для двух Layout элемента
Android OnTouch MotionEvent в андроид выполняется только один раз
ViewPager Android

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

Или воспользуйтесь поиском по форуму:
Adeveloper
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 6
02.03.2013, 23:51  [ТС]     OnTouch траблы с viewflipper и viewpager #7
спасибо всем, кто помог, ваши советы мне помогли
Yandex
Объявления
02.03.2013, 23:51     OnTouch траблы с viewflipper и viewpager
Ответ Создать тему
Опции темы

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