2017-03-24 1 views
0

Le screenshor suivant est mon une partie de mon projet, la liste grise j'emploie un listview au lieu de popupwindow. mais je veux réaliser l'effet comme popupwindow lorsque je clique sur la partie extérieure de popupwindow, le pop va rejeter. enter image description hereComment puis-je cliquer sur l'extérieur du widget et le widget rejeter?

ce que je peux faire pour cela, s'il vous plaît me enseigner, merci avancé

+0

vous voulez afficher un popup lorsqu'un utilisateur clique ci-dessous zone rouge marquée. – Aditya

+0

non, je veux savoir comment faire le rouge rejeter quand je clique sur la partie extérieure de rouge –

Répondre

0

Si vous faites le conteneur pour la zone rouge, une mise en page tels que LinearLayout ou RelativeLayout remplir l'écran, vous pouvez le faire cliquable par XML ou par programme et capturer des clics là-bas. Here est un exemple rapide de la façon de procéder.

Cela suppose que vous voulez simplement ignorer si la zone blanche est cliquée.

Mise à jour: Voici un exemple rapide. Cette petite application va définir la zone blanche en rouge si on clique dessus. Dans l'écouteur de clic, vous pouvez facilement faire ce que vous devez pour rejeter la zone rouge.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<!--Set onClick and clickable here to capture clicks. --> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/backgroundLayout" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/white" 
    android:clickable="true" 
    android:onClick="layoutClicked" 
    tools:context="com.example.layout2.MainActivity"> 

    <!--Set clickable here, too, to capture clicks so they don't propagate 
    to underlying view. The button is still enabled, though. --> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     android:background="@android:color/holo_blue_bright" 
     android:clickable="true"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Hello World!" 
      app:layout_constraintBottom_toBottomOf="parent" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" 
      app:layout_constraintTop_toTopOf="parent" /> 
    </LinearLayout> 

</LinearLayout> 

Et le code de soutien:

MainActivity.java

public class MainActivity extends AppCompatActivity { 

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

    public void layoutClicked(View view) { 
    // Set the background color of the "outside" area to red. 
    // This is where you would dismiss the red area. 
     view.setBackgroundColor(0xFFDD0000); 
    } 
} 
+0

votre moyen est que d'ajouter le cliquable dans le groupe parent zone rouge? J'ajoute et ça ne fonctionne pas, je veux cliquer sur la partie blanche et la zone rouge rejeter –

+0

@Jsonzhang voir la mise à jour de la réponse. – Cheticamp

+0

J'essaie, et seulement je clique sur le haut, la zone rouge va rejeter, et je clique derrière la zone rouge, il ne sera pas ignorer –