Я новичок в программировании на Android, и у меня есть один вопрос. В моем приложении у меня есть ViewPager (с некоторыми фрагментами), а наверху у меня есть панель инструментов с иконками меню. Можно ли показывать разные значки, когда пользователь выбирает разные страницы ViewPager. Я знаю метод onPageSelected из OnPageChangeListener, который работает, когда пользователь выбирает страницу, но я точно не понимаю, как сменить значки. Может ли кто-нибудь дать мне примеры или статьи об этом. Благодаря!Различные значки меню на разных страницах viewpager
ответ
Во всех фрагментах, которые вы используете в виде использовании пейджера:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.grid_to_list, menu);
MenuItem item = menu.findItem(R.id.grid_to_list);
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.grid_to_list:
//Your stuff
break;
}
return false;
}
});
super.onCreateOptionsMenu(menu, inflater);
}
и в методе onCreateView написать это:
setHasOptionsMenu(true);
Hello Surender Kumar! Я пытаюсь использовать этот код, и у меня есть один вопрос, потому что у меня есть ошибка в этой строке MenuItem item = menu.findItem (R.id.grid_to_list); Что здесь означает grid_to_list? Ид, что здесь мне нужно использовать? –
Его идентификатор элемента меню, как мы используем идентификатор виджетов макета в нашей деятельности, тот же идентификатор элемента меню будет использоваться здесь. –
Это возможно. Если у вас 2 страницы, создайте 2 файла ресурсов меню res > menu
. например
menu_one.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="mcrime.com.mcrime.MainActivity">
<item
android:id="@+id/send_icon"
android:orderInCategory="100"
android:icon="@drawable/ic_send_white_24dp"
android:title="Send Report"
app:showAsAction="always" />
</menu>
menu_2.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="mcrime.com.mcrime.MainActivity">
<item
android:id="@+id/make_a_call"
android:orderInCategory="100"
android:icon="@drawable/ic_call_white_24dp"
android:title="Make Call"
app:showAsAction="always" />
</menu>
Тогда на вашем MainActivity:
private ToolBar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_activity_name);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
setUpVariables();
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
private void setUpVariables(){
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
SlidingTabLayout slidingTabLayout = (SlidingTabLayout) findViewById(R.id.tab_layout);
viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
slidingTabLayout.setCustomTabView(R.layout.tab_view, R.id.tab_text_view);
slidingTabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
@Override
public int getIndicatorColor(int position) {
return getResources().getColor(R.color.colorAccent) ;
}
});
slidingTabLayout.setDistributeEvenly(true);
slidingTabLayout.setViewPager(viewPager);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position == 0){
MCrime.this.setTitle("Your custom title");
toolbar.getMenu().clear();
toolbar.inflateMenu(R.menu.menu_one);
} else if(position == 1){
MCrime.this.setTitle("Your custom title");
toolbar.getMenu().clear();
toolbar.inflateMenu(R.menu.menu_2);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
Вы должны создать пейджер адаптера
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
String [] titles = {"Title One", "Title Two", };
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment;
if(position == 0){
fragment = new FragmentOne();
return fragment;
}
if(position == 1){
fragment = new FragmentTwo();
return fragment;
}
return null;
}
@Override
public int getCount() {
return 2;
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
- 1. Различные меню на разных страницах
- 2. Различные боковые меню на разных страницах
- 3. Различные значки для разных версий
- 4. smoothState.js - Различные таблицы стилей на разных страницах?
- 5. Отображение пунктов меню на разных страницах
- 6. Изменение состояния активного меню на разных страницах
- 7. VSCT: Различные значки для разных версий VS
- 8. Android ViewPager различные переходы для разных страниц
- 9. Различные меню Wordpress на разных размерах экрана
- 10. Различные меню для разных фрагментов
- 11. Закрепление на разных страницах
- 12. Различные кнопки разных контекстных меню?
- 13. Различные меню для разных модулей
- 14. Magento показывает различные количества продуктов на разных страницах
- 15. WP отображает различные пользовательские поля на разных страницах
- 16. WordPress: активировать различные таблицы стилей на разных страницах
- 17. Различные макеты в viewpager
- 18. Как я могу настроить различные меню на разных страницах в Wordpress?
- 19. Различные типы контента на страницах
- 20. Различные нижние колонтитулы на двух отдельных страницах
- 21. Выделите с классом по меню на разных страницах
- 22. реализуют differens меню скольжения на разных страницах онсэны-щ
- 23. Как сделать пункты меню разного размера на разных страницах
- 24. Различные меню xmls для разных размеров экрана
- 25. Показать различные меню Wordpress в разных странах
- 26. Различные пункты меню для разных ролей
- 27. Проблемы с установленными изображениями на страницах ViewPager
- 28. Показаны различные значки уведомлений
- 29. Сообщения в разных заказах на разных страницах
- 30. ZF2 различные меню в разных контроллерах
попробуйте google ... :) –