2017-04-06 86 views
1

我尝试设置我的弹出式菜单以填充网格上的孔项目。目前它看起来像附在第一张照片上,下一张是我想要的效果。Android弹出式菜单填写父母

enter image description here

enter image description here

我的代码:

private void showPopupMenu(View view) { 
    // inflate menu 
    ContextThemeWrapper ctw = new ContextThemeWrapper(context, R.style.PopupMenu); 

    PopupMenu popup = new PopupMenu(ctw, view); 

    Menu menu = popup.getMenu(); 
    menu.add(Menu.NONE, 1, Menu.NONE, "Remove"); 
    menu.add(Menu.NONE, 2, Menu.NONE, "Block"); 

    popup.setOnMenuItemClickListener(new MyMenuItemClickListener()); 
    popup.show(); 
} 

可否请你点我到正确的方向,实现从项目的效果呢?

+1

尝试用'PopupWindow',而不是'PopupMenu',它具有丰富的API –

回答

0

使用PopupWindow试试这个

popup.getWindow().getAttributes().height = ViewGroup.LayoutParams.MATCH_PARENT; 
    popup.getWindow().getAttributes().width = ViewGroup.LayoutParams.MATCH_PARENT; 
+1

PopupMenu来自导入android.support.v7.widget.PopupMenu并不存在方法getWindow() – Matt

2

演示应用为您的需求量的。 Preview

您可以在其中添加列表或根据需要对其进行自定义。 MainActivity

public class MainActivity extends Activity { 

    boolean isClicked = true; 
    PopupWindow popUpWindow; 
    RelativeLayout relative; 
    ImageView btnClickHere; 


    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     relative = (RelativeLayout) findViewById(R.id.relative); 
     popUpWindow = new PopupWindow(this); 
     popUpWindow.setContentView(getLayoutInflater().inflate(R.layout.popup_design, null)); 
     popUpWindow.getContentView().findViewById(R.id.textViewa).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(MainActivity.this, "PopItemClicked", Toast.LENGTH_LONG).show(); 
      } 
     }); 

     btnClickHere = (ImageView) findViewById(R.id.imageView); 
     btnClickHere.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       if (isClicked) { 
        isClicked = false; 
        popUpWindow.setHeight(relative.getHeight()); 
        popUpWindow.setWidth(relative.getWidth()); 
        popUpWindow.showAsDropDown(relative, 0, -relative.getHeight()); 
       } else { 
        isClicked = true; 
        popUpWindow.dismiss(); 
       } 
      } 
     }); 
    } 
} 

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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="match_parent" 
    tools:context="com.example.sohailzahid.testapp.MainActivity"> 

    <RelativeLayout 
     android:id="@+id/relative" 
     android:layout_width="150dp" 
     android:layout_height="150dp" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:background="@color/colorAccent" 
     tools:layout_editor_absoluteX="150dp" 
     tools:layout_editor_absoluteY="150dp"> 

     <ImageView 
      android:id="@+id/imageView" 
      android:layout_width="24dp" 
      android:layout_height="24dp" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentEnd="true" 
      android:layout_alignParentRight="true" 
      android:src="@android:drawable/arrow_down_float" /> 
    </RelativeLayout> 

</RelativeLayout> 

popup_design.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#F93567"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/textViewa" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="5dp" 
      android:text="Block" 
      android:textColor="#ffffff" 
      android:textSize="20dp" /> 

     <TextView 
      android:id="@+id/textVsiewa" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="5dp" 
      android:text="Add to friends" 
      android:textColor="#ffffff" 
      android:textSize="20dp" /> 

     <TextView 
      android:id="@+id/textViesw" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="5dp" 
      android:text="Remove" 
      android:textColor="#ffffff" 
      android:textSize="20dp" /> 
    </LinearLayout> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="24dp" 
     android:layout_height="24dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:layout_margin="10dp" 
     android:src="@android:drawable/arrow_down_float" /> 

</RelativeLayout>