How to select a tab without triggering listener?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I have multiple tabs and let's say:
- The user swipes down: it should change tabs depending on which
category it is on. - The user clicks on the tab: it should move
to the the top of the view the category is on.
My problem is when I select the tab once the user gets to a certain view, it triggers onTabSelected
and slides to the top of the view.
Is there a way I could change the tab selected without triggering the Listener?
This is my code
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;
}
}
});
}
}
java android tabs
add a comment |
I have multiple tabs and let's say:
- The user swipes down: it should change tabs depending on which
category it is on. - The user clicks on the tab: it should move
to the the top of the view the category is on.
My problem is when I select the tab once the user gets to a certain view, it triggers onTabSelected
and slides to the top of the view.
Is there a way I could change the tab selected without triggering the Listener?
This is my code
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;
}
}
});
}
}
java android tabs
can you share your code for more information.
– Savin Sharma
Nov 17 '18 at 7:24
1
You could temporarily remove theOnTabSelectedListener
– i.e., callsetOnTabSelectedListener(null)
– and then set it back afterwards. Alternatively, you could keep some sort of flag variable – e.g., aboolean
– to indicate whether or not you should anything inonTabSelected()
.
– Mike M.
Nov 17 '18 at 7:37
hey mike thanks for the suggestion. I had already tried the boolean. I had trouble wrapping my head on how to change the value if the user clicked the tabs instead of scrolling. Ive edit my question.
– Kristofer
Nov 17 '18 at 16:35
@SavinSharma I've updated it!
– Kristofer
Nov 17 '18 at 16:41
@Kristofer Why you are scrolling your nested view to the top every time you change the tab? This is definitely going to slide the view to the top.
– Savin Sharma
Nov 18 '18 at 6:22
add a comment |
I have multiple tabs and let's say:
- The user swipes down: it should change tabs depending on which
category it is on. - The user clicks on the tab: it should move
to the the top of the view the category is on.
My problem is when I select the tab once the user gets to a certain view, it triggers onTabSelected
and slides to the top of the view.
Is there a way I could change the tab selected without triggering the Listener?
This is my code
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;
}
}
});
}
}
java android tabs
I have multiple tabs and let's say:
- The user swipes down: it should change tabs depending on which
category it is on. - The user clicks on the tab: it should move
to the the top of the view the category is on.
My problem is when I select the tab once the user gets to a certain view, it triggers onTabSelected
and slides to the top of the view.
Is there a way I could change the tab selected without triggering the Listener?
This is my code
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;
}
}
});
}
}
java android tabs
java android tabs
edited Nov 17 '18 at 17:06
Moralous
81212
81212
asked Nov 17 '18 at 7:19
KristoferKristofer
130112
130112
can you share your code for more information.
– Savin Sharma
Nov 17 '18 at 7:24
1
You could temporarily remove theOnTabSelectedListener
– i.e., callsetOnTabSelectedListener(null)
– and then set it back afterwards. Alternatively, you could keep some sort of flag variable – e.g., aboolean
– to indicate whether or not you should anything inonTabSelected()
.
– Mike M.
Nov 17 '18 at 7:37
hey mike thanks for the suggestion. I had already tried the boolean. I had trouble wrapping my head on how to change the value if the user clicked the tabs instead of scrolling. Ive edit my question.
– Kristofer
Nov 17 '18 at 16:35
@SavinSharma I've updated it!
– Kristofer
Nov 17 '18 at 16:41
@Kristofer Why you are scrolling your nested view to the top every time you change the tab? This is definitely going to slide the view to the top.
– Savin Sharma
Nov 18 '18 at 6:22
add a comment |
can you share your code for more information.
– Savin Sharma
Nov 17 '18 at 7:24
1
You could temporarily remove theOnTabSelectedListener
– i.e., callsetOnTabSelectedListener(null)
– and then set it back afterwards. Alternatively, you could keep some sort of flag variable – e.g., aboolean
– to indicate whether or not you should anything inonTabSelected()
.
– Mike M.
Nov 17 '18 at 7:37
hey mike thanks for the suggestion. I had already tried the boolean. I had trouble wrapping my head on how to change the value if the user clicked the tabs instead of scrolling. Ive edit my question.
– Kristofer
Nov 17 '18 at 16:35
@SavinSharma I've updated it!
– Kristofer
Nov 17 '18 at 16:41
@Kristofer Why you are scrolling your nested view to the top every time you change the tab? This is definitely going to slide the view to the top.
– Savin Sharma
Nov 18 '18 at 6:22
can you share your code for more information.
– Savin Sharma
Nov 17 '18 at 7:24
can you share your code for more information.
– Savin Sharma
Nov 17 '18 at 7:24
1
1
You could temporarily remove the
OnTabSelectedListener
– i.e., call setOnTabSelectedListener(null)
– and then set it back afterwards. Alternatively, you could keep some sort of flag variable – e.g., a boolean
– to indicate whether or not you should anything in onTabSelected()
.– Mike M.
Nov 17 '18 at 7:37
You could temporarily remove the
OnTabSelectedListener
– i.e., call setOnTabSelectedListener(null)
– and then set it back afterwards. Alternatively, you could keep some sort of flag variable – e.g., a boolean
– to indicate whether or not you should anything in onTabSelected()
.– Mike M.
Nov 17 '18 at 7:37
hey mike thanks for the suggestion. I had already tried the boolean. I had trouble wrapping my head on how to change the value if the user clicked the tabs instead of scrolling. Ive edit my question.
– Kristofer
Nov 17 '18 at 16:35
hey mike thanks for the suggestion. I had already tried the boolean. I had trouble wrapping my head on how to change the value if the user clicked the tabs instead of scrolling. Ive edit my question.
– Kristofer
Nov 17 '18 at 16:35
@SavinSharma I've updated it!
– Kristofer
Nov 17 '18 at 16:41
@SavinSharma I've updated it!
– Kristofer
Nov 17 '18 at 16:41
@Kristofer Why you are scrolling your nested view to the top every time you change the tab? This is definitely going to slide the view to the top.
– Savin Sharma
Nov 18 '18 at 6:22
@Kristofer Why you are scrolling your nested view to the top every time you change the tab? This is definitely going to slide the view to the top.
– Savin Sharma
Nov 18 '18 at 6:22
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53349124%2fhow-to-select-a-tab-without-triggering-listener%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53349124%2fhow-to-select-a-tab-without-triggering-listener%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
can you share your code for more information.
– Savin Sharma
Nov 17 '18 at 7:24
1
You could temporarily remove the
OnTabSelectedListener
– i.e., callsetOnTabSelectedListener(null)
– and then set it back afterwards. Alternatively, you could keep some sort of flag variable – e.g., aboolean
– to indicate whether or not you should anything inonTabSelected()
.– Mike M.
Nov 17 '18 at 7:37
hey mike thanks for the suggestion. I had already tried the boolean. I had trouble wrapping my head on how to change the value if the user clicked the tabs instead of scrolling. Ive edit my question.
– Kristofer
Nov 17 '18 at 16:35
@SavinSharma I've updated it!
– Kristofer
Nov 17 '18 at 16:41
@Kristofer Why you are scrolling your nested view to the top every time you change the tab? This is definitely going to slide the view to the top.
– Savin Sharma
Nov 18 '18 at 6:22