Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Adeveloper
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 6
1

OnTouch траблы с viewflipper и viewpager

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

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

Пытаюсь использовать для свайпинга viewflipper или viewpager. в обоих случаях получаю одну траблу. если в качестве страниц для перелистывания использовать лайауты с какими-то элементами (кнопками и т.д.) и присвоить обработчик OnTouchListener какому-то компоненту(view) на лайауте, то при нажатии на этот view не вызывается обработчик касания.
и еще возникают трудности при присваивании обработчика компоненту на лайауте который в данный момент не установлен функцией setContent.
можно установить обработчик флипперу, пэйджеру, их дочерним компонентам (в моем случае лайаутам, которые перелистываются), а компонентам дочерних кмпонентов уже нельзя. то есть нельзя написать так
Код
flipper.getChildAt(0).getChildAt.setOnTTouchListener(0)
чтобы установить обработик касания на, например, кнопку на одном из лайаутов флиппера или пэйджера.
вот у меня вопрос, как корректно присвоить обработчик касания в таком случае?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2013, 18:44
Ответы с готовыми решениями:

Тормозит ViewFlipper
нужно реализовать прокрутку картинок. Картинки лежат в ресурсах. Для прокрутки...

OnTouch и onLongClick
вот есть ImageButon btnAdd @Override public boolean onTouch(final View...

registerForContextMenu и ontouch
Здравствуйте! Столкнулся с проблемой: при единичном нажатии на экран,...

Вылет onTouch(), перетаскивание
Хочу сделать так, что при перемещении картинки видел ее координаты. В чем...

Программный вызов onTouch
В игре после завершения уровня для перехода в следующий нужно сделать один клик...

6
lavan
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
01.03.2013, 19:39 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);
1
Adeveloper
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 6
01.03.2013, 23:49  [ТС] 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);
не могли бы вы более детально обьяснить
0
lavan
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371
02.03.2013, 12:27 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
0
Adeveloper
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 6
02.03.2013, 22:19  [ТС] 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? На моем примере мне может кто-нибудь обьяснить?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.03.2013, 23:02 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);
1
Adeveloper
0 / 0 / 0
Регистрация: 01.03.2013
Сообщений: 6
02.03.2013, 23:51  [ТС] 7
спасибо всем, кто помог, ваши советы мне помогли
0
02.03.2013, 23:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2013, 23:51

OnTouch на элементе меню
как присвоить setOnTouchListener элементу меню?

Не работает метод onTouch
Есть два TextView надо чтобы по нажатию на одно textView в другом появлялся...

OnTouch узнать цвет пикселя
Добрый день, форумчане! Начал как хобби изучать андройд программирование....


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

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

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