我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android以对话框形式制作数字软键盘怎么实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android以对话框形式制作数字软键盘怎么实现

本篇内容主要讲解“Android以对话框形式制作数字软键盘怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android以对话框形式制作数字软键盘怎么实现”吧!

一、介绍

Android的大部分自定义软键盘主要是通过android自带控件KeyboardView实现的。

那么,有没有其他简单易上手的方法来制作一个软键盘呢?

当当当当!!!

这里就要说到对话框形式的软键盘啦,简单方便易理解!

下面,通过自定义的数字软键盘来介绍如何利用对话框实现自定义软键盘!

先看看效果!

Android以对话框形式制作数字软键盘怎么实现

二、布局编写

我们先来看看布局!

首先是activity_main的实现:

在这里,主界面布局非常简单,仅需要两个TextView文本框就可以啦!

注意!!!

为什么不是EditView控件来实现输入框呢?

我们知道,TextView属于文本控件,而EditView属于输入框控件,按理说咱们需要输入内容,应该选择EditView输入框控件。

但是!!!

点击EditView输入框是会自动跳出系统自带的输入法的。这样的效果,会影响我们自定义软键盘的弹出。所以我们还需要考虑如何禁用系统自动弹出的键盘。当然,这也不难实现,只需要在onCreate中加上:
tv_shownumber.setFocusable(false);
就可以禁用系统键盘啦!

在这里,使用TextView文本框来实现数据输入!

不啰嗦了!上主布局!

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal"    android:background="#C3F4C5">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="80dp"        android:layout_gravity="center"        android:orientation="vertical">        <TextView            android:layout_width="wrap_content"            android:layout_height="40dp"            android:text="身份证:"            android:gravity="left|center"            android:textColor="#000000"            android:textSize="25sp"/>        <TextView            android:id="@+id/tv_shownumber"            android:onClick="show"            android:layout_width="match_parent"            android:layout_height="40dp"            android:hint="  请输入身份证号"            android:background="#FFFFFF"            android:gravity="left|center"            android:textColor="#000000"            android:maxLength="18"            android:textSize="25sp"            android:textColorHint="#B6B1B1"/>    </LinearLayout></LinearLayout>

android:onClick="show" 的意思是点击文本框之后会调用show这个方法!

接下来是自定义软键盘布局!

key.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:orientation="vertical"    android:layout_gravity="bottom">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal"        android:layout_margin="10dp">        <TextView            android:id="@+id/tv_show"            android:layout_width="0dp"            android:layout_weight="3"            android:layout_height="50dp"            android:textColor="#000000"            android:textSize="20sp"            android:maxLength="18"            android:gravity="center"            android:maxLines="18"            android:background="@drawable/keyboard_btn"            />        <Button            android:id="@+id/btn_yes"            android:layout_width="0dp"            android:layout_weight="1"            android:layout_height="wrap_content"            android:text="完成"            android:background="@drawable/keyboard_btn"            android:textStyle="bold"            android:textSize="25dp"            android:layout_margin="3dp"/>    </LinearLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <Button            android:id="@+id/btn_1"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="1"            android:background="@drawable/keyboard_btn"            android:textStyle="bold"            android:textSize="40dp"            android:layout_margin="3dp"/>        <Button            android:id="@+id/btn_2"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="2"            android:background="@drawable/keyboard_btn"            android:textStyle="bold"            android:textSize="40dp"            android:layout_margin="3dp"/>        <Button            android:id="@+id/btn_3"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="3"            android:background="@drawable/keyboard_btn"            android:textStyle="bold"            android:textSize="40dp"            android:layout_margin="3dp"/>    </LinearLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <Button            android:id="@+id/btn_4"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="4"            android:background="@drawable/keyboard_btn"            android:textStyle="bold"            android:textSize="40dp"            android:layout_margin="3dp"/>        <Button            android:id="@+id/btn_5"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="5"            android:background="@drawable/keyboard_btn"            android:textStyle="bold"            android:textSize="40dp"            android:layout_margin="3dp"/>        <Button            android:id="@+id/btn_6"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="6"            android:background="@drawable/keyboard_btn"            android:textStyle="bold"            android:textSize="40dp"            android:layout_margin="3dp"/>    </LinearLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <Button            android:id="@+id/btn_7"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="7"            android:background="@drawable/keyboard_btn"            android:textStyle="bold"            android:textSize="40dp"            android:layout_margin="3dp"/>        <Button            android:id="@+id/btn_8"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="8"            android:background="@drawable/keyboard_btn"            android:textStyle="bold"            android:textSize="40dp"            android:layout_margin="3dp"/>        <Button            android:id="@+id/btn_9"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="9"            android:background="@drawable/keyboard_btn"            android:textStyle="bold"            android:textSize="40dp"            android:layout_margin="3dp"/>    </LinearLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <Button            android:id="@+id/btn_0"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="0"            android:background="@drawable/keyboard_btn"            android:textStyle="bold"            android:textSize="40dp"            android:layout_margin="3dp"/>        <Button            android:id="@+id/btn_X"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="X"            android:background="@drawable/keyboard_btn"            android:textStyle="bold"            android:textSize="40dp"            android:layout_margin="3dp"/>        <Button            android:id="@+id/btn_del"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:text="←"            android:background="@drawable/keyboard_btn"            android:textStyle="bold"            android:textSize="40dp"            android:layout_margin="3dp"/>    </LinearLayout></LinearLayout>

代码很长,但总结起来就是13个按键加上一个TextView文本框。这样一想是不是瞬间觉得毫无难度啦!

布局代码到这里就完成了!
如果你想让你的键盘看起来好看一些,点击有颜色变化效果,也可以给它设置样式!

这是按钮没有皮肤的样子:

Android以对话框形式制作数字软键盘怎么实现

这是按钮有皮肤的样子:

Android以对话框形式制作数字软键盘怎么实现

差别还是挺大的!

下面附上按钮样式的代码:

keyboard_btn.xml

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_pressed="true">        <shape>            <!--圆角大小-->            <corners                android:radius="4dp"/>            <!--距离-->            <padding                android:bottom="1dp"                android:left="1dp"                android:right="1dp"                android:top="1dp"/>            <!--点击边框颜色-->            <stroke                android:color="#81CDEF"                android:width="4dp"/>            <!--点击填充颜色-->            <solid android:color="#AAE2FB"/>        </shape>    </item>    <item android:state_enabled="false">        <shape>            <corners                android:radius="4dp"/>            <padding                android:bottom="1dp"                android:left="1dp"                android:right="1dp"                android:top="1dp"/>        </shape>    </item>    <item>        <shape>            <corners                android:radius="4dp"/>            <padding                android:bottom="1dp"                android:left="1dp"                android:right="1dp"                android:top="1dp"/>            <solid android:color="#ffffff"/>            <stroke                android:width="4dp"                android:color="#A5DCA7"/>        </shape>    </item></selector>

当然,不仅键盘按钮需要皮肤,键盘本身也需要!

这是键盘没有皮肤的样子:

Android以对话框形式制作数字软键盘怎么实现

这是键盘有皮肤的样子:

Android以对话框形式制作数字软键盘怎么实现

下面是键盘样式的代码:

DialogStyle.xml

<resources xmlns:tools="http://schemas.android.com/tools">    <style name="DialogStyle"        android:parent="@android:style/Theme.Dialog"        xmlns:android="http://schemas.android.com/apk/res/android">         <!--&lt;!&ndash; 背景颜色 &ndash;&gt;-->        <item name="android:windowBackground">#AFE1B1</item>        <item name="android:windowContentOverlay">@null</item>         <!-- 浮于Activity之上 -->        <item name="android:windowIsFloating">true</item>         <!--&lt;!&ndash; 边框 &ndash;&gt;-->        <item name="android:windowFrame">@null</item>    </style></resources>

在这里,浮于Activity之上的设置是非常重要的!

它使得我们整个键盘的宽度也发生了改变!

关于xml文件的存放位置,我们一般将activity_main.xml和key.xml放在layout文件夹下,将keyboard_btn.xml放在drawable文件夹下,DialogStyle.xml放在values文件夹下。

三、逻辑编写

有了好看的皮囊,自然也需要有趣的灵魂!

它来了它来了!

MainActivity

package com.example.mydialog; import androidx.appcompat.app.AlertDialog;import androidx.appcompat.app.AppCompatActivity; import android.app.Dialog;import android.os.Bundle;import android.view.Display;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.Button;import android.widget.EditText;import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener{    private TextView tv_shownumber;//    private EditText tv_shownumber;    private String shownumber;    private Dialog dialog;     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv_shownumber = findViewById(R.id.tv_shownumber);    }     private String num[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9","X"};    private String data = "";    @Override    public void onClick(View v) {        shownumber  = tv_shownumber.getText().toString();        switch (v.getId()){            case R.id.btn_0:                data += num[0];                tv_shownumber.setText(data);                tv_show.setText(data);                break;            case R.id.btn_1:                data += num[1];                tv_shownumber.setText(data);                tv_show.setText(data);                break;            case R.id.btn_2:                data += num[2];                tv_shownumber.setText(data);                tv_show.setText(data);                break;            case R.id.btn_3:                data += num[3];                tv_shownumber.setText(data);                tv_show.setText(data);                break;            case R.id.btn_4:                data += num[4];                tv_shownumber.setText(data);                tv_show.setText(data);                break;            case R.id.btn_5:                data += num[5];                tv_shownumber.setText(data);                tv_show.setText(data);                break;            case R.id.btn_6:                data += num[6];                tv_shownumber.setText(data);                tv_show.setText(data);                break;            case R.id.btn_7:                data += num[7];                tv_shownumber.setText(data);                tv_show.setText(data);                break;            case R.id.btn_8:                data += num[8];                tv_shownumber.setText(data);                tv_show.setText(data);                break;            case R.id.btn_9:                data += num[9];                tv_shownumber.setText(data);                tv_show.setText(data);                break;            case R.id.btn_X:                data += num[10];                tv_shownumber.setText(data);                tv_show.setText(data);                break;            case R.id.btn_yes:                dialog.dismiss();                break;            case R.id.btn_del:                data = data.substring(0, data.length() - 1);                tv_shownumber.setText(data);                tv_show.setText(data);                break;            default:                break;        }    }     private View inflate;    private Button btn_0;    private Button btn_1;    private Button btn_2;    private Button btn_3;    private Button btn_4;    private Button btn_5;    private Button btn_6;    private Button btn_7;    private Button btn_8;    private Button btn_9;    private Button btn_X;    private Button btn_yes;    private Button btn_del;    private TextView tv_show;     public void show(View view){        dialog =new Dialog(this,R.style.DialogStyle);        inflate = LayoutInflater.from(this).inflate(R.layout.key, null);//动态添加布局        btn_0 = inflate.findViewById(R.id.btn_0);        btn_1 = inflate.findViewById(R.id.btn_1);        btn_2 = inflate.findViewById(R.id.btn_2);        btn_3 = inflate.findViewById(R.id.btn_3);        btn_4 = inflate.findViewById(R.id.btn_4);        btn_5 = inflate.findViewById(R.id.btn_5);        btn_6 = inflate.findViewById(R.id.btn_6);        btn_7 = inflate.findViewById(R.id.btn_7);        btn_8 = inflate.findViewById(R.id.btn_8);        btn_9 = inflate.findViewById(R.id.btn_9);        btn_X = inflate.findViewById(R.id.btn_X);        btn_yes = inflate.findViewById(R.id.btn_yes);        btn_del = inflate.findViewById(R.id.btn_del);        tv_show = inflate.findViewById(R.id.tv_show);         btn_1.setOnClickListener(this);        btn_2.setOnClickListener(this);        btn_3.setOnClickListener(this);        btn_4.setOnClickListener(this);        btn_5.setOnClickListener(this);        btn_6.setOnClickListener(this);        btn_7.setOnClickListener(this);        btn_8.setOnClickListener(this);        btn_9.setOnClickListener(this);        btn_X.setOnClickListener(this);        btn_0.setOnClickListener(this);        btn_yes.setOnClickListener(this);        btn_del.setOnClickListener(this);         dialog.setContentView(inflate);        Window dialogWindow = dialog.getWindow();         WindowManager m = getWindowManager();        Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用        WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值        p.dimAmount = 0f;//设置背景透明度        dialogWindow.setGravity(Gravity.BOTTOM);        p.width =d.getWidth();//设置键盘的宽度        dialogWindow.setAttributes(p);        dialog.show();    }}

主代码中为每个按键设置了功能,并引入了动态布局key.xml,实现了show()方法,让自定义键盘以对话框的形式弹出!

在这里,背景透明度的设置可以使键盘的出现更加平滑,这一项的设置也可以在xml中进行哦!

dialogWindow.setGravity( Gravity.BOTTOM);

这句话的作用是让我们键盘的位置位于页面底部。

到此,相信大家对“Android以对话框形式制作数字软键盘怎么实现”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android以对话框形式制作数字软键盘怎么实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android以对话框形式制作数字软键盘怎么实现

本篇内容主要讲解“Android以对话框形式制作数字软键盘怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android以对话框形式制作数字软键盘怎么实现”吧!一、介绍Android的大部
2023-06-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录