Android弹出菜单填充父级 [英] Android Popup Menu fill parent

查看:51
本文介绍了Android弹出菜单填充父级的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试设置弹出菜单以填充网格上的孔项目.目前,它看起来像在所附的第一张图片上,第二张是我想要的效果.

I try set my popup menu in way to fill hole item on grid. Currently it look like on attached first picture and the next one is effect which I would like to have.

我的代码:

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

能否请我指出正确的方向,以实现项目的效果?

Could you please point me to right direction to achieve effect from project?

推荐答案

使用PopupWindow进行演示的应用程序. 预览

您可以在其中添加列表或根据需要自定义它. MainActivity

You can add list in it or customize it according to your needs. 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>

这篇关于Android弹出菜单填充父级的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆