Android:如何在PopupMenu底部创建EditText字段?

时间:2015-12-25 19:55:32

标签: android xml menu

我的代码中有一个PopupMenu视图,我希望EditText视图成为其中一个选项,这样用户就可以从选择现有文件的同一菜单中创建一个新文件。根据这篇文章: Android : Display an EditText in a menu 无法将EditText视图用作PopupMenu项。

我的问题是,是否有一种解决方法是无法将EditText声明为菜单项?也许,创建一个ListView并将Popupmenu和EditText视图声明为子视图?

以下是我尝试的代码,但正如预测的那样,它生成了一个没有可见的EditText字段的Popupmenu。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content">

    <item android:id="@+id/new_track"
        android:title="+ create new track"/>

    <EditText
        android:id="@+id/search"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/search_hint"
        android:inputType="textCapWords"
        android:imeOptions="actionSend" />

</menu>

我建议的代码看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<ListView

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content">

    <item android:id="@+id/new_track"
        android:title="+ create new track"/>
</menu>
<EditText
        android:id="@+id/search"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/search_hint"
        android:inputType="textCapWords"
        android:imeOptions="actionSend" />

</ListView>

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为你需要创建RelativeLayout,然后设置每个元素需要进入队列的位置。

        <?xml version="1.0" encoding="utf-8"?>
        <menu xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_height="wrap_content"
          android:layout_width="wrap_content">

        <item android:id="@+id/new_track"
              android:title="+ create new track"/>

    <RelativeLayout>
    <EditText
        android:id="@+id/search"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/search_hint"
        android:inputType="textCapWords"
        android:imeOptions="actionSend"
        android:layout_alignParentBottom="true"/> //this line put edittext at bottom
    </RelativeLayout>
</menu>

编辑:经过多次搜索此特定问题后,我只能说:不,你不能这样做。您只能创建一个调用特定片段的菜单item,或者将工具栏更改为SearchView(如隐藏TextView,显示EditText和Button)。

对于第一个选项,请查看:Search item on action bar android

对于第二个选项:http://blog.rhesoft.com/2015/03/30/tutorial-android-actionbar-with-material-design-and-search-field/