功能描述:点击“菜单”按钮出现菜单,点击菜单“男歌手”、“女歌手”、“组合”出现子菜单,点击子菜单项会提示信息,如“你选择的组合是TFBOYS”。用安卓给出完整的代码实现
时间: 2023-11-01 10:06:38 浏览: 50
好的,以下是一个简单的安卓应用程序,其中包括一个菜单按钮和相关的菜单和子菜单,以及点击子菜单项会弹出提示信息的功能。
首先,在XML布局文件中添加一个按钮,如下所示:
```
<Button
android:id="@+id/menu_button"
android:text="菜单"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
```
接下来,在Java代码中为按钮添加一个点击事件监听器,当用户点击按钮时,会创建并显示菜单和子菜单,如下所示:
```
Button menuButton = findViewById(R.id.menu_button);
menuButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu menu = new PopupMenu(MainActivity.this, v);
menu.getMenuInflater().inflate(R.menu.main_menu, menu.getMenu());
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_male_singer:
showSubMenu(R.menu.male_singer_menu);
return true;
case R.id.menu_female_singer:
showSubMenu(R.menu.female_singer_menu);
return true;
case R.id.menu_group:
showSubMenu(R.menu.group_menu);
return true;
}
return false;
}
});
menu.show();
}
});
```
在上面的代码中,我们使用`PopupMenu`类创建了一个菜单,并使用`getMenuInflater()`方法从菜单资源文件中加载菜单项。当用户选择其中一个选项时,会调用`showSubMenu()`方法显示对应的子菜单。
接下来,我们定义`showSubMenu()`方法来显示子菜单并添加点击事件监听器,如下所示:
```
private void showSubMenu(int menuResId) {
PopupMenu subMenu = new PopupMenu(MainActivity.this, findViewById(R.id.menu_button));
subMenu.getMenuInflater().inflate(menuResId, subMenu.getMenu());
subMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.submenu_tfboys:
showMessage("你选择的组合是TFBOYS");
return true;
case R.id.submenu_jolin:
showMessage("你选择的女歌手是蔡依林");
return true;
case R.id.submenu_jay:
showMessage("你选择的男歌手是周杰伦");
return true;
}
return false;
}
});
subMenu.show();
}
```
在上面的代码中,我们使用`PopupMenu`类创建了一个子菜单,并使用`getMenuInflater()`方法从子菜单资源文件中加载菜单项。当用户选择其中一个选项时,会调用`showMessage()`方法显示对应的提示信息。
最后,我们定义`showMessage()`方法来显示提示信息,如下所示:
```
private void showMessage(String message) {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
}
```
在上面的代码中,我们使用`Toast`类创建一个短时间的提示信息,并将其显示在屏幕上。
完整的代码实现如下所示,可以将其添加到`MainActivity.java`文件中:
```
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button menuButton = findViewById(R.id.menu_button);
menuButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu menu = new PopupMenu(MainActivity.this, v);
menu.getMenuInflater().inflate(R.menu.main_menu, menu.getMenu());
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_male_singer:
showSubMenu(R.menu.male_singer_menu);
return true;
case R.id.menu_female_singer:
showSubMenu(R.menu.female_singer_menu);
return true;
case R.id.menu_group:
showSubMenu(R.menu.group_menu);
return true;
}
return false;
}
});
menu.show();
}
});
}
private void showSubMenu(int menuResId) {
PopupMenu subMenu = new PopupMenu(MainActivity.this, findViewById(R.id.menu_button));
subMenu.getMenuInflater().inflate(menuResId, subMenu.getMenu());
subMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.submenu_tfboys:
showMessage("你选择的组合是TFBOYS");
return true;
case R.id.submenu_jolin:
showMessage("你选择的女歌手是蔡依林");
return true;
case R.id.submenu_jay:
showMessage("你选择的男歌手是周杰伦");
return true;
}
return false;
}
});
subMenu.show();
}
private void showMessage(String message) {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
}
}
```
希望这可以帮助你实现你想要的功能!