Le tabs dei menu non rispondono

Attualmente sto realizzando l’interfaccia utente per la mia app. Uso le funzioni Sliding Up Panel e Sliding Tabs (tutorial con spiegazione di implementazione) . Entrambi funzionano bene. Sono persino riuscito a implementarli in un progetto, ma è qui che entra in gioco il problema: le tabs Home ed Event non rispondono quando le touch (dovrebbe aprire la pagina che rappresenta), ma cambiano quando faccio scorrere tra le tabs.

inserisci la descrizione dell'immagine qui

Ecco il mio codice di layout. Questo è dove il problema è. Ne sono sicuro.

             

Se rimuovo una parte che aggiunge le funzionalità del pannello scorrevole, fare clic su Abilita funzione.

      

MainActivity.java

 public class MainActivity extends ActionBarActivity implements OnTouchListener{ // Declaring Your View and Variables Toolbar toolbar; ViewPager pager; ViewPagerAdapter adapter; SlidingTabLayout tabs; CharSequence Titles[]={"Side","Front", "Result"}; int Numboftabs =3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Creating The Toolbar and setting it as the Toolbar for the activity toolbar = (Toolbar) findViewById(R.id.tool_bar); setSupportActionBar(toolbar); // Creating The ViewPagerAdapter and Passing Fragment Manager, Titles fot the Tabs and Number Of Tabs. adapter = new ViewPagerAdapter(getSupportFragmentManager(),Titles,Numboftabs); // Assigning ViewPager View and setting the adapter pager = (ViewPager) findViewById(R.id.pager); pager.setAdapter(adapter); // Assiging the Sliding Tab Layout View tabs = (SlidingTabLayout) findViewById(R.id.tabs); tabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true, This makes the tabs Space Evenly in Available width // Setting Custom Color for the Scroll bar indicator of the Tab View tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() { @Override public int getIndicatorColor(int position) { return getResources().getColor(R.color.tabsScrollColor); } }); // Setting the ViewPager For the SlidingTabsLayout tabs.setViewPager(pager); tabs.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { v.getParent().requestDisallowInterceptTouchEvent(false); return false; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub return false; } } 

Sviluppando la risposta di Amy qui, supponendo che slidingUpPanel stia bloccando onTouch per i pulsanti di tabulazione, è ansible utilizzare l’eventlistener di onTouch per disabilitare il layout principale per intercettare eventuali eventi di touch come questo

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Creating The Toolbar and setting it as the Toolbar for the activity toolbar = (Toolbar) findViewById(R.id.tool_bar); setSupportActionBar(toolbar); // Creating The ViewPagerAdapter and Passing Fragment Manager, Titles fot the Tabs and Number Of Tabs. adapter = new ViewPagerAdapter(getSupportFragmentManager(),Titles,Numboftabs); // Assigning ViewPager View and setting the adapter pager = (ViewPager) findViewById(R.id.pager); pager.setAdapter(adapter); // Assiging the Sliding Tab Layout View tabs = (SlidingTabLayout) findViewById(R.id.tabs); tabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true, This makes the tabs Space Evenly in Available width // Setting Custom Color for the Scroll bar indicator of the Tab View tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() { @Override public int getIndicatorColor(int position) { return getResources().getColor(R.color.tabsScrollColor); } }); // Setting the ViewPager For the SlidingTabsLayout tabs.setViewPager(pager); // THIS PART, ADD CODE HERE ! tabs.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { v.getParent().requestDisallowInterceptTouchEvent(false); return false; } }); } 

MODIFICA 1:

il pannello scorrevole è come una sovrapposizione sopra i suoi figli, quindi se si mantiene il layout delle tabs nei bambini, la vista a strisce del pannello scorrevole si troverà esattamente sopra la tab tab, e questa striscia scorrevole del pannello si fermerà tab strip da ricevere qualsiasi click o touch eventi, quindi quando in realtà stai cercando di toccare o fare clic sulle tabs non stai effettivamente toccando / facendo clic sulle tabs perché il pannello scorrevole è in cima ad esso. ciò che devi fare è mettere la finestra scorrevole all’esterno del layout scorrevole

                      

Dalla documentazione:

Per impostazione predefinita, l’intero pannello fungerà da regione di trascinamento e intercetterà i clic e trascinerà gli eventi. È ansible limitare l’area di trascinamento a una vista specifica utilizzando il metodo umanoDragView o umanoDragView attributo umanoDragView .

Quindi presumo che il pannello scorrevole consumi il tuo onClick sulle tue tabs, semplicemente imposta gli attributi come suggerisce la documentazione.

 tabs.setOnTouchListener(new View.OnTouchListener { @Override public boolean onTouch(View v, MotionEvent event) { v.getParent().requestDisallowInterceptTouchEvent(false); return false; } }); 

metti questo dentro il tuo onCreate ()