单击一个按钮,将启动一个弹出菜单,然后我单击一个弹出菜单项,然后所选项目将显示在 android studio 中的按钮文本上

click on a button, a popup menu will start, and then I click on a popup menu item then selected item will show on buttontext in android studio

我想点击一个按钮然后弹出菜单会出现然后我 单击弹出菜单项,弹出菜单项将显示在 按钮作为按钮文本。假设有一个按钮,按钮文本是"YourEmail"。然后我点击按钮,弹出菜单将启动,当我点击弹出菜单项时,该项目将显示在按钮上作为按钮文本。

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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.application.popupproject.MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="showPopup"
        android:text="show popup"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

MainActivity.java,这里我想将按钮中的项目菜单显示为按钮文本:

package com.example.application.popupproject;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.PopupMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements PopupMenu.OnMenuItemClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void showPopup(View v) {
        PopupMenu popup = new PopupMenu(this, v);
        popup.setOnMenuItemClickListener(this);
        popup.inflate(R.menu.popup_menu);
        popup.show();
    }

    @Override
    public boolean onMenuItemClick(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.item1:
                Toast.makeText(this, "Item 1 clicked", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item2:
                Toast.makeText(this, "Item 2 clicked", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item3:
                Toast.makeText(this, "Item 3 clicked", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item4:
                Toast.makeText(this, "Item 4 clicked", Toast.LENGTH_SHORT).show();
                return true;
            default:
                return false;
        }
    }
}

首先添加一个按钮id,然后创建一个按钮对象并link它到activity_main.xml中的按钮。

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?>
 <android.support.constraint.ConstraintLayout 
 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.application.popupproject.MainActivity">

   <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button1":
    android:onClick="showPopup"
    android:text="show popup"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
   </android.support.constraint.ConstraintLayout>

MainActivity.java

  package com.example.application.popupproject;

  import android.support.v7.app.AppCompatActivity;
  import android.os.Bundle;
  import android.support.v7.widget.PopupMenu;
  import android.view.MenuItem;
  import android.view.View;
  import android.widget.Toast;

  public class MainActivity extends AppCompatActivity implements 
  PopupMenu.OnMenuItemClickListener {
      Button button;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      button = (Button) findViewById(R.id.button1);
      }

     public void showPopup(View v) {
     PopupMenu popup = new PopupMenu(this, v);
     popup.setOnMenuItemClickListener(this);
     popup.inflate(R.menu.popup_menu);
     popup.show();
     }

    @Override
    public boolean onMenuItemClick(MenuItem item) {
        switch (item.getItemId()) {
             case R.id.item1:
                     Toast.makeText(this, "Item 1 clicked", 
                                     Toast.LENGTH_SHORT).show();
                     button.setText("item 1");
                     return true;
              case R.id.item2:
                      Toast.makeText(this, "Item 2 clicked", 
                                      Toast.LENGTH_SHORT).show();
                       button.setText("item2");
                     return true;
             case R.id.item3:
                     Toast.makeText(this, "Item 3 clicked", 
                                     Toast.LENGTH_SHORT).show();
                      button.setText("item3");
                       return true;
             case R.id.item4:
                     Toast.makeText(this, "Item 4 clicked", 
                                 Toast.LENGTH_SHORT).show();
                      button.setText("item4")
                     return true;
              default:
                    return false;
         }
      }
   }