如何在输入键上隐藏键盘

Posted

技术标签:

【中文标题】如何在输入键上隐藏键盘【英文标题】:How to hide keyboard on enter key 【发布时间】:2011-12-13 11:03:50 【问题描述】:

我有一个包含四个编辑文本的活动,我想在用户完成使用四个编辑文本之一时隐藏键盘。如果我在键盘上单击输入,它将聚焦另一个编辑文本并且键盘仍然存在,但我需要隐藏键盘,因此只使用一个编辑文本而不一定使用另一个。 这是xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_
android:layout_ android:background="@drawable/sfondo">
<LinearLayout android:id="@+id/linearLayout1"
    android:layout_ android:layout_>
    <ImageButton android:id="@+id/backPersonalizza"
        android:src="@drawable/back" android:background="@null"
        android:layout_marginTop="10dip" android:layout_
        android:layout_ android:layout_marginLeft="5dp"></ImageButton>
    <TextView android:layout_
        android:gravity="center"
        android:textColor="@android:color/black" android:id="@+id/testoSuggerimenti"
        android:text="Personalizza il testo e le icone. Clicca su una delle icone e scegli l'immagine preferita"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_
        android:layout_marginTop="10dp"
        android:layout_marginRight="5dp"
        ></TextView>
</LinearLayout>
<LinearLayout android:id="@+id/linearLayout2"
    android:layout_ android:layout_
    android:orientation="vertical" android:layout_marginTop="20dp">
    <LinearLayout android:id="@+id/linearLayout3"
        android:layout_ android:layout_>
        <EditText android:layout_ android:id="@+id/editT1"
            android:layout_ android:layout_marginLeft="32dp"
            android:layout_marginRight="25dp" android:gravity="center"
            android:ellipsize="end" android:singleLine="true">
            <requestFocus></requestFocus>
        </EditText>
        <EditText android:layout_ android:id="@+id/editT2"
            android:layout_ android:layout_marginRight="10dp"
            android:gravity="center" android:ellipsize="end"
            android:layout_marginLeft="10dp" android:singleLine="true"></EditText>
    </LinearLayout>
    <LinearLayout android:layout_weight="1" android:id="@+id/linearLayout4"
        android:layout_ android:layout_>
        <ImageButton android:layout_
            android:layout_ android:src="@drawable/tasto1"
            android:id="@+id/tastoMod1" android:background="@null"
            android:layout_marginLeft="30dp" android:layout_marginTop="-5dp"></ImageButton>
        <ImageButton android:layout_
            android:layout_ android:src="@drawable/tasto2"
            android:id="@+id/tastoMod2" android:background="@null"
            android:layout_marginLeft="30dp" android:layout_marginTop="-5dp"></ImageButton>
    </LinearLayout>
</LinearLayout>
<LinearLayout android:id="@+id/linearLayout5"
    android:layout_ android:layout_
    android:orientation="vertical">
    <LinearLayout android:id="@+id/linearLayout6"
        android:layout_ android:layout_>
        <EditText android:layout_ android:id="@+id/editT3"
            android:layout_ android:layout_marginLeft="32dp"
            android:layout_marginRight="25dp" android:gravity="center"
            android:ellipsize="end" android:singleLine="true"></EditText>
        <EditText android:layout_ android:id="@+id/editT4"
            android:layout_ android:layout_marginRight="30dp"
            android:gravity="center" android:ellipsize="end" android:singleLine="true"
            android:layout_marginLeft="10dp"></EditText>
    </LinearLayout>
    <LinearLayout android:id="@+id/linearLayout7"
        android:layout_ android:layout_>
        <ImageButton android:layout_
            android:layout_ android:src="@drawable/tasto3"
            android:id="@+id/tastoMod3" android:background="@null"
            android:layout_marginLeft="30dp" android:layout_marginTop="-5dp"></ImageButton>
        <ImageButton android:layout_
            android:layout_ android:src="@drawable/tasto4"
            android:id="@+id/tastoMod4" android:background="@null"
            android:layout_marginLeft="30dp" android:layout_marginTop="-5dp"></ImageButton>
    </LinearLayout>
</LinearLayout>

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

我不确定,但你应该试试这个代码:-

youredittext.setOnEditorActionListener(new TextView.OnEditorActionListener() 

    @Override
    public boolean onEditorAction(TextView v, int keyCode, KeyEvent event) 
        if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) 
            // hide virtual keyboard
            InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(youredittext.getWindowToken(), 0);
            return true;
        
        return false;
    
);

我希望这会有所帮助..

【讨论】:

我会努力的!但是这样它只会覆盖回车键,而不是其他 true? 我编辑了我的答案,我想尝试将 OnEditorActionListener 附加到所有答案。 对我来说奇怪的效果,按回车键但 keyCode 为 0。使用 event.getKeyCode() 解决【参考方案2】:

最好的方法是在 XML 文件中添加以下代码

android:imeOptions="actionDone"

【讨论】:

可能是因为编辑文本是编程生成的,没有xml文件可以编辑...... 不!首先阅读问题...他说他有 4 个 editText,当有人在任何 editText 上完成输入时,他想隐藏键盘 因为如果您在 EditText 上设置了 TextView.OnEditorActionListener,则键盘不会在按下 Enter 按钮时隐藏。如果有更好的选择,更糟糕的选择将被弃用:)

以上是关于如何在输入键上隐藏键盘的主要内容,如果未能解决你的问题,请参考以下文章

appium+java 如何隐藏安卓键盘

如何在不单击后退按钮的情况下隐藏键盘[重复]

android 横屏状态,如何监听键盘的弹起与隐藏

输入焦点时隐藏ios设备上的键盘

iPhone:隐藏应用程序上的键盘输入背景或视图消失

如何在Android中判断软键盘是不是弹出或隐藏