Cómo ocultar el Umano SlidingupPanel al hacer clic fuera del panel

AndroidSlidingUpPanel

Aquí, estoy usando la biblioteca del panel de slidingup. Puede ver el panel y listview en la siguiente pantalla. Lo que estoy tratando de hacer es ocultar el panel si hago clic fuera del panel (Dim Area). En su lugar está haciendo clic en el listview en el diseño anterior. ¿Cómo puedo conseguir esto?

Introduzca aquí la descripción de la imagen

Aquí está el XML,

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res/com.voucher.point.activity" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!-- sothree:dragView="@+id/dragView" --> <com.sothree.slidinguppanel.SlidingUpPanelLayout xmlns:sothree="http://schemas.android.com/apk/res-auto" android:id="@+id/sliding_layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="bottom" app:fadeColor="@color/transparent" sothree:panelHeight="40dip" sothree:paralaxOffset="200dp" > <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/white" android:orientation="vertical" > <ListView android:id="@+id/offersList" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scrollbars="none" android:visibility="gone" > </ListView> </LinearLayout> <include android:id="@+id/bottom_menu" android:layout_width="fill_parent" android:layout_height="270dip" layout="@layout/side_menu" /> </com.sothree.slidinguppanel.SlidingUpPanelLayout> 

¿Puedo hacer esto?

Creo que usted ha arreglado su problema, pero para otros que tiene el mismo requisito He añadido otra View en la parte superior de mi mapa (en formato xml) y establecer su capacidad de clic en el tacto.

Así que mi archivo xml es así:

 <com.sothree.slidinguppanel.SlidingUpPanelLayout android:id="@+id/sliding_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/booking_confirm_layout" android:gravity="bottom" app:umanoFadeColor="@color/black_75_percent" app:umanoOverlay="true" app:umanoPanelHeight="111dp" app:umanoShadowHeight="0dp"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.gms.maps.MapView android:id="@+id/map_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="96dp" /> <View android:id="@+id/mapCover" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent"/> </FrameLayout> <LinearLayout> . . . </LinearLayout> </com.sothree.slidinguppanel.SlidingUpPanelLayout> 

Y en el código:

 this.mMapCover = findViewById(R.id.mapCover); this.mMapCover.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (mSlidingPanel.getPanelState() != PanelState.COLLAPSED) { mSlidingPanel.setPanelState(PanelState.COLLAPSED); return true; } return false; } }); 

Con la versión 3.3.0 y posterior, es posible hacerlo de la siguiente manera

 final SlidingUpPanelLayout slidingUpPanelLayout = (SlidingUpPanelLayout) findViewById(R.id.sliding_layout); slidingUpPanelLayout.setFadeOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); } }); 

fuente

Su panel deslizante contiene toda la pantalla y luego cómo detecta el clic fuera de la pantalla. Si usted está apuntando a sólo para "HideMenu" y "ShowMenu", entonces es posible hacer.

De lo contrario, con el panel deslizante de pantalla completa puede ocultarlo haciendo clic en el botón posterior de Android o cualquier evento de clic en el panel de sí mismo.

Avísame si mi respuesta no resuelve tu problema.

Disfrute de la codificación … 🙂

Usted puede agregar un onClickListener o onTouchListener al panel exterior y al ontouch o la llamada oncick slidingPanelLayout.expandPane (0)

 findViewById(R.id.bg_panel).setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { slidingPanelLayout.expandPane(0); return false; } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.