2016-05-26 1 views
0

Je veux atteindre exactement comme PopupMenu with icons Sur la mise en page cliquez sur qui est dans la barre d'outils personnalisée. Donc, j'ai pris l'aide d'une réponse, mais la question que je suis confronté est: Rien ne ressort sur le clic.PopMenus avec des icônes

POPLayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/poplayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

     <ImageView 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:background="@drawable/home" /> 

     <TextView 
      android:id="@+id/tvDistance" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="HOME" 
      android:layout_marginLeft="20dp" 
      android:paddingTop="5dp" 
      android:gravity="center_vertical" 
      android:textColor="@color/backgroud_user" /> 
    </LinearLayout> 


    <LinearLayout 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

     <ImageView 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:background="@drawable/ic_cloud_upload" /> 

     <TextView 
      android:id="@+id/cloud" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="CHECKIN" 
      android:layout_marginLeft="20dp" 
      android:paddingTop="5dp" 
      android:gravity="center_vertical" 
      android:textColor="@color/backgroud_user" /> 
    </LinearLayout> 

</LinearLayout> 

Toolbar.xml (se composent d'une disposition à être cliqué)

<?xml version="1.0" encoding="utf-8"?> 
    <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/toolbar_height" 
     android:background="@color/toolbar_color" 
     android:contentInsetLeft="0dp" 
     android:contentInsetStart="0dp" 
     android:elevation="4dp" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark" 
     app:contentInsetLeft="0dp" 
     app:contentInsetStart="0dp"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:weightSum="1" 
      android:orientation="horizontal"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/textview" 
       android:text="My Assignments" 
       android:layout_gravity="center" 
       android:gravity="center" 
       android:layout_marginLeft="90dp" 
       android:layout_weight="0.5" 
       android:textSize="20sp" 
       /> 

      <LinearLayout(**layout to be clicked**) 
       android:layout_width="35dp" 
       android:layout_height="35dp" 
       android:background="#75aadb" 
       android:id="@+id/accountinfo_layout" 
       android:layout_gravity="center" 
       android:layout_marginLeft="10dp"> 
       <ImageView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="6dp" 
        android:src="@drawable/account"/> 

      </LinearLayout> 


     </LinearLayout> 
     </android.support.v7.widget.Toolbar> 

Code.class

accountInfoLayout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       if(point!=null){ 
        int[] location = new int[2]; 
        v.getLocationOnScreen(location); 
        point = new Point(); 
        point.x = location[0]; 
        point.y = location[1]; 
        showPopup(getActivity(),point); 
       } 

// La méthode qui affiche le popup.

private void showPopup(final Activity context, Point p) { 
      int popupWidth = 200; 
      int popupHeight = 150; 

      // Inflate the popup_layout.xml 
      LinearLayout viewGroup = (LinearLayout) context.findViewById(R.id.poplayout); 
      LayoutInflater layoutInflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View layout = layoutInflater.inflate(R.layout.pop_window, viewGroup); 

      // Creating the PopupWindow 
      final PopupWindow popup = new PopupWindow(context); 
      popup.setContentView(layout); 
      popup.setWidth(popupWidth); 
      popup.setHeight(popupHeight); 
      popup.setFocusable(true); 

      // Some offset to align the popup a bit to the right, and a bit down, relative to button's position. 
      int OFFSET_X = 30; 
      int OFFSET_Y = 30; 

      // Clear the default translucent background 
      popup.setBackgroundDrawable(new BitmapDrawable()); 

      // Displaying the popup at the specified location, + offsets. 
      popup.showAtLocation(layout, Gravity.NO_GRAVITY, p.x + OFFSET_X, p.y + OFFSET_Y); 

     } 

Rien à montrer en cliquant dessus. S'il vous plaît aidez-moi à trouver Bug.

Répondre

1

Je pense enlèverait juste si (point! = Null) condition, il fonctionnera

accountInfoLayout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


        int[] location = new int[2]; 
        v.getLocationOnScreen(location); 
        point = new Point(); 
        point.x = location[0]; 
        point.y = location[1]; 
        showPopup(getActivity(),point); 
       } 
} 
}