Как выбрать вкладку, не вызывая слушателя? - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть несколько вкладок, и скажем:

  1. Пользователь проводит вниз: он должен менять вкладки в зависимости от того, к какой категории он относится.
  2. Пользователь нажимает на вкладку:она должна переместиться в верхнюю часть представления, в котором находится категория.

Моя проблема заключается в том, что при выборе вкладки, когда пользователь попадает в определенное представление, она вызывает onTabSelected и перемещается кверхняя часть вида.

Есть ли способ изменить выбранную вкладку, не вызывая прослушиватель?

Это мой код

public class Activity extends AppCompatActivity {

    public TabLayout tabLayout;
    public RecyclerView firstView,secondView;
    public NestedScrollView nestedScrollView;
    public RelativeLayout relativeLayout;
    public boolean clicked = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_meat_category);

//removed unimportant codes


        tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);

          tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { // I removed the boolean here because I don't know where to change the value of it.
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                if(tabLayout.getSelectedTabPosition() == 0){
                    nestedScrollView.scrollTo(0, firstView.getTop());
                }else if(tabLayout.getSelectedTabPosition() == 1){
                    nestedScrollView.smoothScrollTo(0, secondView.getTop());
                }
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });

        nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
            @Override
            public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
                if (scrollY <= firstView.getBottom()){
                    tabLayout.getTabAt(0).select();
                    clicked = false;
                } else if (scrollY >= secondView.getTop() && scrollY <= secondView.getBottom() ){
                    tabLayout.getTabAt(1).select();
                    clicked = false;
                }

            }

        });




    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...