Android控制软键盘的弹出和隐藏_Android-kongqw的博客-程序员宝宝

技术标签: 控件  软键盘  android  

弹出软键盘

前提:必须要有一个可以编辑的控件(EditText),并且当前已经获取焦点

/**
 * 弹出软键盘
 */
public void openKeyboard(View view) {
    // 获取焦点
    editText2.setFocusable(true);
    editText2.setFocusableInTouchMode(true);
    editText2.requestFocus();
    // 弹出软键盘
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(editText2, 0);
}

参数说明

/**
 * Synonym for {@link #showSoftInput(View, int, ResultReceiver)} without a result receiver: explicitly request that the current input method's soft input area be shown to the user, if needed.
 * 
 * @param view The currently focused view, which would like to receive soft keyboard input.
 * @param flags Provides additional operating flags.  Currently may be 0 or have the {@link #SHOW_IMPLICIT} bit set.
 */
public boolean showSoftInput(View view, int flags) {
    return showSoftInput(view, flags, null);
}
  • 效果图

P1

隐藏软键盘

/**
 * 关闭软键盘
 */
public void closeKeyboard(View view) {
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

hideSoftInputFromWindow()方法的参数是一个IBinder窗口令牌,可以用View.getWindowToken()从附加到窗口的View对象上获得,大部分情况下,每个事件的回调方法都会有一个引用指向正在编辑的TextView,或者是发起事件的View(比如某个按钮),通过调用这些对象获得窗口令牌,再将其传递给InputMethodManager最方便的做法。

  • 效果图

P2

软键盘开关

开启软键盘的时候隐藏软键盘,隐藏软键盘的时候开启软键盘

/**
 * 软键盘开关
 */
public void toggleKeyboard(View view) {
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.toggleSoftInputFromWindow(view.getWindowToken(), 0, 0);
}

弹出键盘的时候是一个道理,想要编辑哪个EditText,要先让其获取焦点

  • 效果图

P3
P4

测试类

package com.kongqw.kqwkeysetdemo;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;


public class MainActivity extends Activity {
    

    private EditText editText;
    private EditText editText2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = (EditText) findViewById(R.id.edittext);
        editText2 = (EditText) findViewById(R.id.edittext2);
    }

    /**
     * 弹出软键盘
     */
    public void openKeyboard(View view) {
        // 获取焦点
        editText2.setFocusable(true);
        editText2.setFocusableInTouchMode(true);
        editText2.requestFocus();
        // 弹出软键盘
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editText2, 0);
    }

    /**
     * 关闭软键盘
     */
    public void closeKeyboard(View view) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }

    /**
     * 软键盘开关
     */
    public void toggleKeyboard(View view) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.toggleSoftInputFromWindow(view.getWindowToken(), 0, 0);
    }
}

页面布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/edittext"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/edittext2"
        android:layout_width="match_parent"
        android:layout_below="@+id/edittext"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/edittext2"
        android:onClick="openKeyboard"
        android:text="弹出软键盘" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button"
        android:onClick="closeKeyboard"
        android:text="关闭软键盘" />

    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button2"
        android:onClick="toggleKeyboard"
        android:text="开关" />
</RelativeLayout>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/q4878802/article/details/48288945

智能推荐

成为视频分析专家:自动生成视频集锦(Python实现)_磐创 AI的博客-程序员宝宝

介绍我是个超级板球迷。从我记事起,我就迷上了这项运动,至今它仍在我的日常生活中起着重要的作用。我相信很多读到这篇文章的人都会点头!但是自从我开始工作以来,要跟上所有的比赛就成了一件棘手的事。我不能看一场完整的比赛,只能看一些短暂的片段,或者看文字解说。所以作为数据科学家的我决定做点什么。有没有一种方法可以让我使用我的Python技能并剪辑出比赛的所有重要部分?实际上,我想用Python创建...

qt 子窗体透明 不受父窗体背景影响 播放视频_丘上人的博客-程序员宝宝_qt 子窗口不随父窗口透明

使用qt版本 qt5.11.0 windows10 平台设置子窗体透明的方式很多。但是很多方式在有些情况下效果却很糟。如果父窗体上播放视频操作,或其他有修改窗体swichbuffer的行为时,透明效果需要做点小操作。1、首先如果希望透明子窗体要时时刻刻在父窗体上显示,需要继承父窗体指针,再调用raise()。2、让父窗体不影响子窗体,需要修改窗体flag值。Qt窗体类型有三种,一种是...

从零开始学GIMP:一.从基本图形开始_xVan的博客-程序员宝宝_gimp教程

GIMP全名是GNU Image Manipulation Program,GNU意味着是开源,免费的.可以在GIMP官网下载到安装版,或者源代码.Linux用户(Ubuntu,Fedora等)也可以在商店直接下载到GIMP.废话不多说开始本节讲解1.1点击启动:1.2启动完成(默认为多窗口模式可以点击:窗口->单窗口模式 来切换):2.1新建文件0

springBoot02_案例细节、使用向导快速创建springBoot项目、重新导入_乐七_的博客-程序员宝宝_springboot项目怎么重新构建

案例细节场景启动器里边有各种场景启动器,用到哪个就是导入依赖主程序只要是SpringBootApplication标注的,就是主配置类,比如这个类在com.sjg包下,那么就会在启动项目时,扫描com.sjg包下的所有子包,将里边的所有组件扫描到spring容器,其实就是spring中的纯注解开发的过程,将原本的配置文件都换成了配置类。Selector组件选择器,会把这个场景所需要的所有组件以全限定类名返回,并添加到spring容器中,添加的就是这些自动配置类,就是当前场景所需要

CGI实现页面的动态生成_yi412的博客-程序员宝宝

CGI实现页面的动态生成 - bbking时间 2014-04-02 03:58:00 博客园-所有随笔区原文 http://www.cnblogs.com/chenbjin/p/3639613.html     传统的Web应用开发局限于有限的静态页面( HTML静态页面 ),不利于系统的扩展,不能提供及时信息,而且修改维护麻烦,所以建立一个动态Web应用程序尤为重要

随便推点

探测远程Windows主机的NetBIOS信息_swords_man的博客-程序员宝宝

文摘内容: 原创:TOo2y(夜色) 来源:中华安全网(SafeChina) 探测远程Windows主机的NetBIOS信息Author: TOo2y[原创]E-mail: [email protected]: http://www.safechina.net/Date: 12-25-2002注:    本文相关程序 T-SMB 可探测远程主机的NetBIOS信息,包括操作系统

oracle 11g acfs,Oracle 11gR2 : ACFS 文件系统 呼之欲出_weixin_39564605的博客-程序员宝宝

Oracle 11gR2 : ACFS 文件系统 呼之欲出在ITPUB上看到Kamus透露的一些关于Oracle Database 11gR2的消息,学习记录一下。1. Oracle Cluster Repository (OCR) and Voting Disk stored in ASMThis feature enables ASM to provide a unified storage ...

常用排列组合公式_faterazer的博客-程序员宝宝_排列组合公式

1. 排列公式nnn 个相异物件取 rrr(1≤r≤n1 \leq r \leq n1≤r≤n)个的不同排列总数,为Prn=n(n−1)(n−2)⋯(n−r+1)P_r^n = n(n-1)(n-2)\cdots(n-r+1)Prn​=n(n−1)(n−2)⋯(n−r+1)特别地,若 n=rn=rn=r,得Prr=r(r−1)⋯1=r!P_r^r = r(r-1)\cdots 1 = r!Prr​=r(r−1)⋯1=r!人们常约定把 0!0!0! 作为 111。当 rrr 不是非负整数时,

如何用Spring Boot加密配置文件中的特殊内容示例代码详解_折翼之舞°的博客-程序员宝宝

前言:这篇文章主要介绍了SpringBoot加密配置文件特殊内容的相关知识,是小编在网上看的的,如有冒犯会及时修改。本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下有时安全不得不考虑,看看新闻泄漏风波事件就知道了我们在用Spring boot进行开发时,经常要配置很多外置参数ftp、数据库连接信息、支付信息等敏感隐私信息,如下这不太好,特别是互联网应用,应该用加密的方式比较安全,有点类似一些应用如电商、公安、安检平台、滚动式大屏中奖信

HTML中图片位置及大小的控制__吟游诗人的博客-程序员宝宝

经过一些思考和突发奇想,我发现有些时候,在HTML中,如果将三张图片放在一行,那么如果将网页缩小,还会在一行吗。现在有两种方法:(1)用table&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;这种用法可以有效地使几张图片放在一行,要是缩小页面,将会有移动的框出现,图片大小不变,但是仍然在一行。(2)用比例我们可以设置图片的比例,比如:width=”60%”,这和上面的结果不同,图

推荐文章

热门文章

相关标签