如何在Android键盘中同时“返回”和“完成”选项

时间:2016-03-10 14:26:02

标签: java android android-layout keyboard

我有一个使用EditText的Android记事本应用程序。当用户开始输入编辑文本时,我希望他们可以选择使用“完成”按钮退出键盘,或者使用“返回”按钮转到下一行。我找不到让键盘同时包含完成和返回按钮的方法。如果有任何方法可以实现这一目标,那就太棒了。

我知道一种方法可能是在键盘上添加一个顶部边框,其中有一个“完成”按钮。我也研究了这个,当键盘变得可见时,我无法找到如何使顶部边框出现。如果这是最好的方法,我也想知道如何做到这一点。我已设法通过带有adjustResize的键盘在屏幕上调整边框大小,但我想在键盘可见的情况下使边框仅存在。那就是我被困住的地方。

以下是我的观点:

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

<!--
The main EditText that covers the entire activity.
It is attached to the LinedEditor class which
gives it the "notepad" look.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="fill_parent">

    <view
        class = "com.patrickslagle.notepad.NewNote$LinedEditor"
        android:id="@+id/note"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/yellow"
        android:scrollbars="vertical"
        android:fadingEdge="vertical"
        android:gravity="top"
        android:textSize="22sp"
        android:textColor="@color/black"
        android:paddingLeft="60dp"
        android:paddingStart="60dp"
        android:paddingTop= "25dp"
        android:textCursorDrawable="@drawable/cursor"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <include layout="@layout/bottom_border"
        android:layout_width="match_parent"
        android:layout_height="44dp"
        android:id="@+id/bottom_border"
        android:layout_alignBottom="@+id/note"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

</RelativeLayout>

我目前的底线:

<!--
The bottom menu bar where the user chooses actions.
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/bottom_border"
    android:layout_width="match_parent"
    android:layout_height="30dp"
    android:orientation="horizontal"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true"
    android:background="@color/yellow"
    android:layout_marginLeft="0dp"
    android:layout_marginRight="0dp"
    android:layout_marginBottom="0dp">

        <ImageButton
            android:contentDescription="@string/delete_button"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:id="@+id/delete"
            android:src="@drawable/ic_delete_24dp"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/bullets"
            android:layout_toEndOf="@id/bullets"
            android:padding="7dp"
            android:layout_margin="0dp"
            android:background="@color/yellow" />

        <ImageButton
            android:contentDescription="@string/save_button"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:id="@+id/save"
            android:src="@drawable/ic_save_24dp"
            android:padding="7dp"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@+id/mail"
            android:layout_toStartOf="@+id/mail"
            android:background="@color/yellow" />

        <ImageButton
            android:contentDescription="@string/menu_desc"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:id="@+id/menu"
            android:src="@drawable/ic_menu_24dp"
            android:padding="7dp"
            android:layout_margin="0dp"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@+id/save"
            android:layout_toStartOf="@+id/save"
            android:background="@color/yellow" />

        <ImageButton
            android:contentDescription="@string/bullet"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:id="@+id/bullets"
            android:src="@drawable/ic_format_list_bulleted_24dp"
            android:padding="7dp"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/mail"
            android:layout_toEndOf="@+id/mail"
            android:background="@color/yellow" />

        <ImageButton
            android:contentDescription="@string/mail_symbol"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:id="@+id/mail"
            android:src="@drawable/ic_email_24dp"
            android:padding="7dp"
            android:layout_centerHorizontal="true"
            android:background="@color/yellow" />

        <ImageButton
            android:contentDescription="@string/clear"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:id="@+id/clear_note"
            android:src="@drawable/ic_clear_24dp"
            android:padding="7dp"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:background="@color/yellow" />

</RelativeLayout>

以下是我的应用的屏幕截图,如果它有帮助:

Notepad Screenshot

1 个答案:

答案 0 :(得分:1)

根据Google设计指南,例如http://developer.android.com/design/patterns/navigation.html,您不需要扩展键盘:

  • 设备上的后退键(硬键或软键)只会让键盘消失。
  • 如果您需要其他操作,例如&#34;保存更改&#34;,则应在屏幕顶部放置一个操作按钮。当键盘仍处于打开状态时,也可以单击此按钮,因此无需额外点击。

遵循设计规则将使您的应用程序更易于使用,因为它的行为与其他知名应用程序类似。相比之下,带有自己键盘布局的应用可能会让用户感到困惑。