如何在Android Studio中添加一个下拉菜单

959 阅读6分钟

下拉菜单,也被称为旋钮,是应用程序中最重要的UI元素之一。在本教程中,我将告诉你如何使用Java为你的Android应用添加一个下拉菜单。

下拉菜单可以组织一个应用程序并改善用户体验。几乎每个应用程序都有一个集成到用户界面的下拉菜单。

如果你是一个刚刚在Android Studio上制作最初的应用程序的开发者,这个教程就是为你准备的。

尽管在你的安卓应用中添加下拉菜单就像拖放一样简单,但它肯定会变得很棘手,特别是当你是使用安卓工作室的新手。

设置环境

一旦你在Android studio上创建了一个项目,打开这些文件。

  • res/layout/activity_main.xml
  • res/values/strings.xml
  • app/java/your.project.name/MainActivity.java

(当你创建项目时,MainActivity.java文件被默认打开)。

打开所有的文件后,你的IDE应该是这样的。

IDE with code resource and layout

添加下拉菜单布局

现在,是时候添加下拉菜单布局了。在Android Studio中,布局被添加到布局XML文件中。为此,请前往activity_main.xml。当你在activity_main.xml文件中,打开Design 标签。你会在你的IDE的右上角找到它。

Design tab in XML

Android Studio中的Android下拉菜单是使用Spinners添加的。

如果你的应用程序屏幕上有默认文本存在,请回到代码部分,删除所有的TextViews

现在,从设计调色板,选择容器。你会在那里找到Spinner

这里请注意,我们使用的是Android Studio 4.2.2。在旧版本的Android Studio中,Spinner可能位于widget部分。如果你找不到它,你可以简单地点击搜索图标并搜索Spinner

Spinner

一旦你找到了Spinner,就把它拖放到你的移动应用程序上面。Android Studio将为你做相关的编码工作,你以后可以通过回到代码屏幕来检查它。

根据你放置Spinner的位置,布局代码应该看起来像这样。

Spinner
    android:id="@+id/spinner_languages"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="338dp"
    android:spinnerMode="dropdown"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

然而,Android Studio允许你通过属性面板改变下拉菜单的高度、宽度和边距来定制你的下拉菜单,而不必从头开始编写所有的代码。

当你在做这件事的时候,确保spinnerMode 被设置为dropdown 来创建一个下拉菜单。你可以在属性面板中找到这个设置。

在你的应用程序屏幕上定位下拉菜单是很容易的。Android Studio GUI将为你提供所有的约束条件,让你指定你的下拉菜单的位置。

一旦你对你的下拉菜单的风格感到满意,切换到代码视图并编辑Spinner id,这在以后我们将Spinner集成到Java文件时是需要的。

Spinner id可以在<Spinner> 标签的第一行找到。给它一个你会记住的ID,以便在你的应用程序代码的其他地方使用。

Spinner id

最后,回到设计部分,按下顶部的 "推断约束 "按钮--我个人称之为 "魔法按钮"--来处理我们代码中所有缺失的约束。

Infer Constraints Button

为下拉菜单添加元素

现在你已经在你的屏幕上添加了一个下拉菜单,现在是时候用一堆选择来填充它,供用户选择。

为此,你需要打开strings.xml文件。这个文件最初将是空的,它应该看起来像这样。

strings.xml file

为了给你的安卓下拉菜单添加元素,你需要声明一个字符串数组并给它一个名字。在已经声明的string 下方声明一个string-array ,使用下面的语法。

<resources>
    <string name="app_name">dropDownMenuExample</string>
    <string-array name="languages">
        <item>C</item>
        <item>C++</item>
        <item>Java</item>
        <item>JavaScript</item>
        <item>VisualBasic</item>
    </string-array>
</resources>

字符串数组必须在资源标签中声明。否则,你会得到一个语法错误。字符串数组也可以在主Java文件中声明,但把它放在一个单独的XML文件中,可以增加代码的重用性,提高应用程序的效率。在你的下拉菜单中可以有多少个项目是没有限制的。

在Java文件中调用旋转器

在我们开始编码之前,请将以下类导入你的代码中。

  • os.Bundle
  • view.View
  • widget.AdapterView
  • widget.ArrayAdapter
  • widget.Spinner
  • widget.Toast

最好是事先导入这些类,以避免以后出现语法错误。然而,如果你仍然遇到语法错误,你可以随时将鼠标悬停在它上面,然后按Alt + Enter键,为你的代码导入相关的类。

为了将Android下拉菜单传递给Java,你必须定义一个Spinner 对象。使用Spinner 类的名称,并给该对象一个合适的名字。接下来,通过用你在activity_main.xml文件中声明的相同id来查找实例化旋转器。

Spinner spinnerLanguages=findViewById(R.id.spinner_languages);

现在在下一步,你必须创建一个 [ArrayAdapter](https://developer.android.com/reference/android/widget/ArrayAdapter#createFromResource(android.content.Context,%20int,%20int)).ArrayAdapter 将负责在访问Java下拉菜单时将语言字符串数组中的每个项目渲染到屏幕上。

ArrayAdapter<CharSequence>adapter=ArrayAdapter.createFromResource(this, R.array.languages, android.R.layout.simple_spinner_item);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);

createFromResources() 是 类的一个内置方法,需要三个输入参数。ArrayAdapter

  • 应用程序的环境。在一个活动中,你可以直接使用this
  • 你在strings.xml文件中声明的StringArray 的名称。
  • 布局类型

在这个特殊的例子中,我们使用一个基本的旋转器布局。

我们上面声明的适配器是没有用的,除非它连接到我们的下拉菜单(spinner)。因此,设置旋转器使用该适配器。

spinnerLangauges.setAdapter(adapter);

随着ArrayAdapter ,并成功绑定到spinner ,你已经成功地将你的第一个Android下拉菜单集成到你的应用程序中。

现在你可以在模拟器上运行你的应用程序。它看起来会是这样的。

Dropdown menu view in emulator

有了Java下拉菜单,你现在可以在activity_main.xml文件中稍微玩一下。试着改变高度属性,看看下拉菜单如何在屏幕上移动。

总结

下拉菜单可以通过几个简单的步骤添加到你的Android应用程序中。

对于初学者,你需要编辑XML文件。使用Android Studio的拖放功能将下拉菜单整合到其中。接下来,你必须创建一个字符串数组,将所有相关的项目添加到你的下拉菜单中。然后,你需要在主Java文件中获得Spinner 实例以及一个ArrayAdapter 。最后,你设置你的旋转器以使用该适配器。

有了这三个代码文件同时工作,你就会有一个Android下拉菜单在你的第一个Android应用上正常工作。