studio sirve settitle que programacion para name how java android android-layout android-viewpager android-tabs

java - sirve - set name to jframe



Las pestañas del menú no responden (3)

Actualmente estoy haciendo UI para mi aplicación. Uso las funciones del panel deslizante y las pestañas deslizantes (tutorial con explicación de implementación) . Ambos funcionan bien. Incluso logré implementarlos en un proyecto, pero ahí es donde aparece el problema: las pestañas de Inicio y Evento no responden cuando las toco (debería abrir la página que representa), pero cambian cuando me deslizo entre las pestañas.

Aquí está mi código de diseño. Aquí es donde está el problema. Estoy seguro de ello.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <include android:id="@+id/tool_bar" layout="@layout/tool_bar" android:layout_height="wrap_content" android:layout_width="match_parent" /> <com.sothree.slidinguppanel.SlidingUpPanelLayout xmlns:sothree="http://schemas.android.com/apk/res-auto" android:id="@+id/sliding_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom" sothree:umanoPanelHeight="68dp" sothree:umanoShadowHeight="4dp" sothree:umanoParalaxOffset="100dp" sothree:umanoDragView="@+id/dragView"> <!-- MAIN CONTENT --> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#ff0000"> <com.ui.test.SlidingTabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/ColorPrimary"/> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_height="match_parent" android:layout_width="match_parent" android:layout_weight="1"> </android.support.v4.view.ViewPager> </RelativeLayout> <!-- SLIDING LAYOUT --> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#55eeeeee" android:orientation="vertical" android:clickable="true" android:focusable="false" android:id="@+id/dragView"> <LinearLayout android:layout_width="match_parent" android:layout_height="68dp" android:orientation="horizontal"> <TextView android:id="@+id/name" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:textSize="14sp" android:gravity="center_vertical" android:paddingLeft="10dp"/> <Button android:id="@+id/follow" android:layout_width="wrap_content" android:layout_height="match_parent" android:textSize="14sp" android:gravity="center_vertical|right" android:paddingRight="10dp" android:paddingLeft="10dp"/> </LinearLayout> <ImageView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:scaleType="fitStart" android:src="@drawable/daimage" > </ImageView> </LinearLayout> </com.sothree.slidinguppanel.SlidingUpPanelLayout>

Si elimino la parte que agrega las funciones del Panel deslizante hacia arriba, la función de clic habilita.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <include android:id="@+id/tool_bar" layout="@layout/tool_bar" android:layout_height="wrap_content" android:layout_width="match_parent" /> <com.ui.test.SlidingTabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/ColorPrimary"/> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_height="match_parent" android:layout_width="match_parent" android:layout_weight="1"> </android.support.v4.view.ViewPager>

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; } }


Construyendo sobre la respuesta de Amy aquí, asumiendo que el SlowUpPanel está bloqueando el onTouch para los botones de la pestaña, entonces puede usar el selector de eventos onTouch para no permitir que el diseño principal intercepte eventos táctiles como este

@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; } }); }

EDITAR 1:

el panel que se desliza hacia arriba es como una superposición sobre sus hijos, por lo que si mantiene el diseño de la pestaña en los niños, la vista de la tira del panel hacia arriba se colocará justo encima de la tira de la pestaña, y esta tira del panel que se desliza hacia arriba detendrá la la barra de pestañas recibe los eventos de clic o toque, por lo que cuando intenta tocar o hacer clic en las pestañas, en realidad no está tocando / haciendo clic en las pestañas porque el panel hacia arriba está arriba. lo que debe hacer es colocar la tabla de deslizamiento fuera del diseño del panel deslizante

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <include android:id="@+id/tool_bar" layout="@layout/tool_bar" android:layout_width="match_parent" android:layout_height="wrap_content" /> <!--this is outside sliding up panel layout--> <com.example.www.slidinguppanelapp.SlidingTabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#f0f0f0"/> <com.sothree.slidinguppanel.SlidingUpPanelLayout android:id="@+id/sliding_layout" xmlns:sothree="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom" sothree:umanoDragView="@+id/dragView" sothree:umanoPanelHeight="68dp" sothree:umanoShadowHeight="4dp"> <!-- MAIN CONTENT --> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ff0000" android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"> </android.support.v4.view.ViewPager> </RelativeLayout> <!-- SLIDING LAYOUT --> <LinearLayout android:id="@+id/dragView" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#55eeeeee" android:clickable="true" android:focusable="false" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="68dp" android:orientation="horizontal"> <TextView android:id="@+id/name" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center_vertical" android:paddingLeft="10dp" android:textSize="14sp"/> <Button android:id="@+id/follow" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical|right" android:paddingLeft="10dp" android:paddingRight="10dp" android:textSize="14sp"/> </LinearLayout> <ImageView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:scaleType="fitStart" android:src="@drawable/blur_bg"> </ImageView> </LinearLayout> </com.sothree.slidinguppanel.SlidingUpPanelLayout> </LinearLayout>


De la documentación:

De forma predeterminada, todo el panel actuará como una región de arrastre e interceptará clics y arrastrará eventos. Puede restringir el área de arrastre a una vista específica utilizando el método umanoDragView o el atributo umanoDragView .

Así que asumo que el Panel deslizante consume su onClick en sus pestañas, simplemente establezca los atributos como sugiere la documentación.


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

ponga esto dentro de su onCreate ()