2016-05-26 23 views
0

我想實現完全一樣PopupMenu with icons在佈局上單擊自定義工具欄中的哪個。所以,我已經採取了答案的幫助,但我面臨的問題是:沒有什麼是點擊彈出。帶圖標的PopMenus

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(由一個佈局的被點擊)

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

//顯示彈出窗口的方法。

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

     } 

沒有在顯示上點擊。請幫助我找到Bug。

回答

1

我覺得只是刪除如果(點!= NULL)條件下,將工作

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