Урок 125. ViewPager

Обсуждение уроков
qwe
Сообщения: 10
Зарегистрирован: 04 ноя 2013, 23:29

Re: Урок 125. ViewPager

Сообщение qwe » 31 янв 2014, 10:51

Помогите пожалуйста как вместо надписей реализовать imgbatton. Чтобы перелистывание помимо слайда происходило от кнопок. Вчера весь вечер промучился- не получается.
Вложения
Slide.rar
Это проект.
(1.14 МБ) 275 скачиваний
А надо примерно так.
А надо примерно так.
device2.png (15.61 КБ) 15910 просмотров
Сейчас вот так.
Сейчас вот так.
device1.png (10.52 КБ) 15910 просмотров

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 125. ViewPager

Сообщение KamiSempai » 31 янв 2014, 11:35

Ни как. Вы используете PagerTabStrip, а он почти не кастомизируется.
Смотрите в сторону сторонних библиотек.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

qwe
Сообщения: 10
Зарегистрирован: 04 ноя 2013, 23:29

Re: Урок 125. ViewPager

Сообщение qwe » 31 янв 2014, 12:04

А вы можете что нибудь посоветовать, что нужно использовать для реализации такого ViewPager ?

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 125. ViewPager

Сообщение KamiSempai » 31 янв 2014, 12:26

Возможно это поможет http://viewpagerindicator.com/?utm_sour ... um=toolbox
Там вроде бы можно иконки для записей устанавливать.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

umni4ek
Сообщения: 2
Зарегистрирован: 31 янв 2014, 12:37

Re: Урок 125. ViewPager

Сообщение umni4ek » 31 янв 2014, 12:39

Хочу реализовать что-то типа книги с использованием ViewPager, есть достаточно объемный текст, как определить, по сколько строк текста может вместиться на каждой странице?

qwe
Сообщения: 10
Зарегистрирован: 04 ноя 2013, 23:29

Re: Урок 125. ViewPager

Сообщение qwe » 31 янв 2014, 12:57

На каждом устройстве по разному (зависит от разрешения экрана). Если будет использоваться на устройстве с одним разрешением то методом тыка посмотрите.

qwe
Сообщения: 10
Зарегистрирован: 04 ноя 2013, 23:29

Re: Урок 125. ViewPager

Сообщение qwe » 31 янв 2014, 13:04

KamiSempai писал(а):Возможно это поможет http://viewpagerindicator.com/?utm_sour ... um=toolbox
Там вроде бы можно иконки для записей устанавливать.
Спасибо !!!
Последний раз редактировалось qwe 31 янв 2014, 17:43, всего редактировалось 2 раза.

umni4ek
Сообщения: 2
Зарегистрирован: 31 янв 2014, 12:37

Re: Урок 125. ViewPager

Сообщение umni4ek » 31 янв 2014, 13:08

qwe писал(а):На каждом устройстве по разному (зависит от разрешения экрана). Если будет использоваться на устройстве с одним разрешением то методом тыка посмотрите.
На разных устройствах планируется использовать. Книги вот как делают?

George.Light
Сообщения: 3
Зарегистрирован: 08 окт 2013, 18:19

Re: Урок 125. ViewPager

Сообщение George.Light » 01 фев 2014, 00:04

Подскажите, а можно в ViewPager вместо Layout прикрутить целое Activity?
Мой случай:
Мной переделанный пример из урока 125;
У меня пару страниц, на каждой свой Layout(fragment1, fragment2)
При запуске на первой странице(fragment1), есть кнопка, в клас fragment1 помещен onClickListener.
Но тем не менее кнопка не срабатывает.
В функции onCreateView организовал проверку pageNumber по которой идет выбор среди
R.layout.fragment1 и
R.layout.fragment2
Есть ли простой способ заставить содержимое работать?
(P.S. Не судите строго, написал пост на быструю руку со смарта)

Александра
Сообщения: 1
Зарегистрирован: 02 фев 2014, 00:13

Re: Урок 125. ViewPager

Сообщение Александра » 02 фев 2014, 00:21

Подскажите, а как отключить оптимизацию, которая генерирует страницы заранее. Я пробовала методом setOffscreenPageLimit() установить количество страниц в 0 или -1. Однако на отладке в OnCreate() и в onViewCreated() все равно заходит дважды для 0-ой и 1-ой страниц.
Или может быть есть какой-то иной способ реализации. Дело в том, что содержимое моей 1-ой страницы должно зависеть от того, что произойдет на 0-ой. А если они обе генерируются одновременно, то действия, предпринимаемые на 0-ой странице получаются бесполезными

SevenXP
Сообщения: 113
Зарегистрирован: 21 июл 2013, 18:20

Re: Урок 125. ViewPager

Сообщение SevenXP » 13 апр 2014, 01:03

есть проблема, может кто сталкивался и знает как ее решить.
Все у меня происходит на фрагмента, только 1 FragmentActivite. (FragmentActivity) пришлось использовать что бы получить SupportFragmentManager и используется супорт только в ViewPager.
Проблема у меня такая.
Нажимаю на кнопку, перехожу на Fragment у которого есть ViewPager и листаю фрагменты, все отлично все видно, показывается нужная информация. (только при первом переходе на фрагмент с ViewPager)
Жму назад отрабатывает мето popBackStack, жму опять ( на эту же кнопку или на другу)
ViewPager не показывает Fragment, начинаю листать, бывает 1-2 раза еще не покажет, потом показывает все нормаль, делаю слайды назад. Все показывает.

В чем косяк, при втором переходе на фрагмен с ViewPager первых 1-2 фрагмента черных, при слайде назад, потом он их показывает. Проблема начинается на 2+ переходе на ViewPager?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 125. ViewPager

Сообщение Mikhail_dev » 13 апр 2014, 08:15

Я слабо что понял. Тут бы видео записать (для записи видео я лично использую UVScreenCamera, только при записи отключить запись звука).

SevenXP
Сообщения: 113
Зарегистрирован: 21 июл 2013, 18:20

Re: Урок 125. ViewPager

Сообщение SevenXP » 13 апр 2014, 12:23

Скоро залью, но я уже прокатически понял, что проблемы в каком то кэше ViewPager
Конечно как я сделал, так делает нельзя. Но начал динамически создавать ViewPager и добавлять его в мой LinerLayout

Сразу падло, смотрю просит задать id задал статический id проблема осталась.
Когда сделал viewPager.setId(rnd.nextInt(100000)); то проблема исчезла но, это не круто.
Эта ссылка с рандом id https://www.youtube.com/watch?v=PLe_ONU ... e=youtu.be но такое решение меня не устраивает, иногда кидает что не может найти ресуср, когда фрагмент где ViewPager находится, закрывается (popBackStack).

Код: Выделить всё

public class FragmentViewPage  extends BasicFragment implements OnPageChangeListener{
	private ViewPager viewPager;
	private ArrayList<DataInfoMainNews> listNews;
	private AdapterForPageView adapterForPageView;
	private ProgressBar progressBar;
	private LinearLayout layout;
	
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {

		View view = inflater.inflate(R.layout.fragment_news_detail_main_contener, null); 
		int idGroup = this.getArguments().getInt(KEY_GROUP_NEWS);
		int idNews = this.getArguments().getInt(KEY_NUMBER_NEWS);
		listNews = FragmentNews.getDataInfoMainNews(idGroup);
		
		layout = (LinearLayout)  view.findViewById(R.id.fragment_liner);
		viewPager = new ViewPager(getActivity());
		FrameLayout.LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
		viewPager.setLayoutParams(params);
		Random rnd = new Random();
		viewPager.setId(rnd.nextInt(1000000));
		layout.addView(viewPager);
		adapterForPageView = new AdapterForPageView(getFragmentActivity().getSupportFragmentManager(), listNews, idGroup);
		viewPager.setAdapter(adapterForPageView);
		progressBar = (ProgressBar) view.findViewById(R.id.fragment_news_detail_progressBar);
		progressBar.setMax(listNews.size());
		viewPager.setOnPageChangeListener(this);
		viewPager.setCurrentItem(idNews);
		progressBar.setProgress(idNews+1);
		progressBar.getProgressDrawable().setColorFilter(Color.RED, Mode.SRC_IN);
		setCallBackFunction();
		return view;
	}

Вот так если я тену ViewPager c layout либо статический ID
Если залить фон. То за мест черного фона, будет бэкграунд но фрагмент не отображает
https://www.youtube.com/watch?v=CZ1D89t ... e=youtu.be



Cейчас накидал тестовый Использовал везде support.v4.fragment.
Баг остался, при повторном заходе на фрагмент с ViewPage контент не виден. При сколле соседния появляются.

Но если я делаю StartActivirty в котором есть ViewPager всегда отрабатывает нормально. Но мне так не подайдет. Мне нельзя вызывать активиту. Работа должна быть на фрагментах.

SevenXP
Сообщения: 113
Зарегистрирован: 21 июл 2013, 18:20

Re: Урок 125. ViewPager

Сообщение SevenXP » 13 апр 2014, 15:23

Пипец какой то

Вот если кому нужно

Код: Выделить всё

 @Override
	    public void onViewCreated(View view, Bundle savedInstanceState) {
	        super.onViewCreated(view, savedInstanceState);

	        viewPager = (ViewPager) view.findViewById(R.id.pager);
			adapter= new Adapter(getChildFragmentManager()); <-Именно эта строчка убрала баг и менно нужно передать в адаптер SupportManagerFragment (getChildFragmentManager())
			viewPager.setAdapter(adapter);
	    }
В проекте переделал и все работает. Теперь правда по классам не красиво и га... код, но главное работает
И прикол в том, что должен пойти именно getChildFragmentManager() а что бы его передать нужно унаследоваться от android.support.v4.app.Fragment; и проблема со вторым запуском и темным экраном пропала.

+ Не используте при динамических созданиях фгаментов FragmentPagerAdapter хранит все вьюхи и не удаляет. Используйте FragmentStatePagerAdapter.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 125. ViewPager

Сообщение Mikhail_dev » 14 апр 2014, 09:05

getChildFragmentManager необходим когда создают фрагмент во фрагменте.

SevenXP
Сообщения: 113
Зарегистрирован: 21 июл 2013, 18:20

Re: Урок 125. ViewPager

Сообщение SevenXP » 14 апр 2014, 16:02

Спасибо буду знать,

Еще такой вопрос. ВСе тот же ViewPager все вроде бы как работает. Дальше пишу и столкнулся с проблемой. Как решить не знаю.
ViewPager показывает фрагмент. Тискаю на кнопку, происходит StartActivity. Но когда тискаю back.
Я перехожу на ViewPager и фрагменты начинают сролится при переходе на них через 1-2 секунд. На рандомное значение. У фрагмента родитель ScrollView -> можно ли отключить вообще скрол? То что пробовал, не получилось.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 125. ViewPager

Сообщение Mikhail_dev » 14 апр 2014, 17:44

У фрагмента родитель ScrollView -> можно ли отключить вообще скрол?
У вашего фрагмента родитель скролл? Конечно можно, вы же создаете фрагмент!
ViewPager показывает фрагмент. Тискаю на кнопку, происходит StartActivity. Но когда тискаю back.
Я перехожу на ViewPager и фрагменты начинают сролится при переходе на них через 1-2 секунд.
не совсем понял

SevenXP
Сообщения: 113
Зарегистрирован: 21 июл 2013, 18:20

Re: Урок 125. ViewPager

Сообщение SevenXP » 14 апр 2014, 18:16

Почти разобрался но дела не в Fragmente а в ScrollView + WebView через 10-15 секунд при переходах на другие фрагменты(слайдом) WebView скролит.

Просто у меня есть FragmentNews он содержит титульник, 3 кнопки, картинку и webView ( WebView нужен, по том что будет текст приходить в HTML виде, со стилями и тд тп). Вот я и думаю отключить скрол на 2 секунды потом включить, но это не true. Сейчас за мест webView кинул TextView и все отлично, скрола нету:)
а да + WebView может сразу даже и виден не быть. И что бы все окей просмотреть, все равно нужен ScrollView а дальше уже все в LinearLayout

А с ViewPager у меня еще прикольние проблема была. По сколько у меня Android 4.0+ я использовал обычные Fragment (не Support) и тут у меня началась головная боль.
По тому что мне нужно было в FragmentPageAdapter передать SupportFragmentManager через getChildFragmentManager (а у меня то возвращал FragmetManager) но как то на кастылях все работает, что бы ViewPager работал нормально.
Правда во всех Fragment пришлось ручками контент весь чистить и удалять, что бы в памяти не хранилось. И за моих махинаций.

А есть что нибудь подобное типа ViewPager только что бы работал на обычных Fragment( не Support.v4.)

SlavaKuzmin
Сообщения: 2
Зарегистрирован: 17 апр 2014, 11:13

Re: Урок 125. ViewPager

Сообщение SlavaKuzmin » 17 апр 2014, 11:18

Проблема, никак не могу найти решение, как будто бы только я с ней столкнулся: все примеры с связанные с листанием Fragment через ViewPager выполняются с одинаковой странностью, при перелистывании все элементы на экране смазываются. Пробовал как на эмуляторах, так и на смартфоне.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 125. ViewPager

Сообщение Mikhail_dev » 17 апр 2014, 12:16

Что-то непонятно, что там смазывается. Видео запиши сего дела.

Ответить