Recyclerview自定义数字键盘

提示:这里使用recyclerview进行自定义数字键盘


文章目录

  • Recyclerview自定义数字键盘
  • 一、自定义数字键盘效果
  • 二、自定义步骤
    • 1.写adapter
    • 2.activity使用
    • 3.自定义的样式
  • 总结 (需要源码的下面有)

提示:以下是本篇文章正文内容,下面案例可供参考

一、自定义数字键盘效果

二、自定义步骤

1.写adapter

xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:id="@+id/keyboard_key"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:gravity="center"android:textColor="@color/white"android:textSize="25sp"android:textStyle="bold"></TextView></LinearLayout>

adapter代码如下:

package com.example.demo1.adapter;import android.content.Context;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;import com.example.demo1.R;import java.util.ArrayList;
import java.util.List;/*** @author : Code23* @time : 2021/1/13* @module : KeyBoardAdapter* @describe :*/
public class KeyBoardAdapter extends RecyclerView.Adapter {private Context context;private List<String> stringList = new ArrayList<>();private int width;//屏幕宽度public KeyBoardAdapter(Context context, List<String> stringList, int width) {this.context = context;this.stringList = stringList;this.width = width;}class KeyBoardHolder extends RecyclerView.ViewHolder {private TextView keyboardKey;public KeyBoardHolder(@NonNull View itemView) {super(itemView);keyboardKey = (TextView) itemView.findViewById(R.id.keyboard_key);}}@NonNull@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view = LayoutInflater.from(context).inflate(R.layout.adapter_keyboard, null, false);KeyBoardHolder keyBoardHolder = new KeyBoardHolder(view);return keyBoardHolder;}@Overridepublic void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {final KeyBoardHolder keyBoardHolder = (KeyBoardHolder) holder;keyBoardHolder.keyboardKey.setText(stringList.get(position));ViewGroup.LayoutParams layoutParams = keyBoardHolder.keyboardKey.getLayoutParams();if (position != 10) {//数字键盘宽度和背景设置keyBoardHolder.keyboardKey.setBackgroundResource(R.drawable.btn_gray_bg);layoutParams.width = ((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, width / 3, context.getResources().getDisplayMetrics()));} else {//确定键盘宽度和背景设置keyBoardHolder.keyboardKey.setBackgroundResource(R.drawable.btn_blue_bg);layoutParams.width = ((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, width - (width / 3), context.getResources().getDisplayMetrics()));}layoutParams.height = ((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, width / 3, context.getResources().getDisplayMetrics()));keyBoardHolder.keyboardKey.setLayoutParams(layoutParams);/*** 键盘item点击*/keyBoardHolder.keyboardKey.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {if (position != 10) {//数字键盘监听onClickKeyBoardListener.OnClickKeyBoard(stringList.get(position));} else {//确认键盘监听onClickKeyBoardListener.OnClickSure();}}});/*** 键盘item触目监听*/keyBoardHolder.keyboardKey.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View view, MotionEvent motionEvent) {switch (motionEvent.getAction()) {case MotionEvent.ACTION_DOWN://按下if (position != 10) {keyBoardHolder.keyboardKey.setBackgroundResource(R.drawable.btn_blue_bg);}break;case MotionEvent.ACTION_UP://取消or离开case MotionEvent.ACTION_CANCEL:if (position != 10) {keyBoardHolder.keyboardKey.setBackgroundResource(R.drawable.btn_gray_bg);}break;}return false;}});}@Overridepublic int getItemCount() {return stringList != null ? stringList.size() : 0;}public void setOnClickKeyBoardListener(OnClickKeyBoardListener onClickKeyBoardListener) {this.onClickKeyBoardListener = onClickKeyBoardListener;}private OnClickKeyBoardListener onClickKeyBoardListener;public interface OnClickKeyBoardListener {void OnClickKeyBoard(String key);void OnClickSure();}
}

2.activity使用

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="match_parent"android:background="@color/black"android:orientation="vertical"android:overScrollMode="never"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="60dp"android:layout_margin="20dp"android:gravity="center_vertical"android:orientation="horizontal"><TextViewandroid:id="@+id/numerickeyboard_inputtext"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center_vertical"android:hint="请输入数字"android:maxLength="8"android:textColor="@color/white"android:textColorHint="@color/white"android:textSize="25sp"></TextView><ImageViewandroid:id="@+id/numerickeyboard_clear"android:layout_width="80dp"android:layout_height="50dp"android:scaleType="fitXY"android:src="@mipmap/icon_clear"></ImageView></LinearLayout><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/numerickeyboard_keyboardlist"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:overScrollMode="never"android:paddingLeft="20dp"android:paddingRight="20dp"android:scrollbars="none"></androidx.recyclerview.widget.RecyclerView>
</LinearLayout>

activity代码如下:

package com.example.demo1.activity;import android.content.res.Resources;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;import com.example.demo1.R;
import com.example.demo1.adapter.KeyBoardAdapter;
import com.example.demo1.utils.Tools;import java.util.ArrayList;
import java.util.List;/*** @author : Code23* @time : 2021/1/13* @module : NumericKeyboardActivity* @describe :数字键盘界面*/
public class NumericKeyboardActivity extends AppCompatActivity {private TextView numerickeyboardInputtext;private ImageView numerickeyboardClear;private RecyclerView numerickeyboardKeyboardlist;private int width;//屏幕宽度private KeyBoardAdapter keyBoardAdapter;private List<String> stringList = new ArrayList<>();private String inputnumber = "";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_numerickeyboard);initView();}private void initView() {//获取屏幕宽度Resources resources = this.getResources();DisplayMetrics displayMetrics = resources.getDisplayMetrics();width = Tools.px2dip(this, displayMetrics.widthPixels) - 55;numerickeyboardInputtext = (TextView) findViewById(R.id.numerickeyboard_inputtext);numerickeyboardClear = (ImageView) findViewById(R.id.numerickeyboard_clear);numerickeyboardKeyboardlist = (RecyclerView) findViewById(R.id.numerickeyboard_keyboardlist);//获取资源文件数据String[] keyboards = getResources().getStringArray(R.array.keyboard);for (String key : keyboards) {stringList.add(key);}//数字键盘列表适配器实例化keyBoardAdapter = new KeyBoardAdapter(this,stringList, width);final GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);gridLayoutManager.setOrientation(RecyclerView.VERTICAL);gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {//控制行数@Overridepublic int getSpanSize(int position) {//最后一行占两位置,其余占一个位置return position != 10 ? 1 : 2;}});numerickeyboardKeyboardlist.setLayoutManager(gridLayoutManager);numerickeyboardKeyboardlist.setAdapter(keyBoardAdapter);/*** 数字键盘列表item时间监听*/keyBoardAdapter.setOnClickKeyBoardListener(new KeyBoardAdapter.OnClickKeyBoardListener() {@Overridepublic void OnClickKeyBoard(String key) {//数字按钮int lens = (inputnumber + key).length();if (lens < 9) {inputnumber = inputnumber + key;numerickeyboardInputtext.setText(inputnumber);}}@Overridepublic void OnClickSure() {//确定按钮Toast.makeText(NumericKeyboardActivity.this, inputnumber, Toast.LENGTH_SHORT).show();}});/*** 清除*/numerickeyboardClear.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {inputnumber = "";numerickeyboardInputtext.setText(inputnumber);}});}
}

3.自定义的样式

1、btn_blue_bg

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><corners android:radius="15dp"></corners><solid android:color="#169BD5"></solid>
</shape>

2、btn_gray_bg

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><corners android:radius="15dp"></corners><solid android:color="#999999"></solid>
</shape>

3、keyboard

<string-array name="keyboard"><item>0</item><item>1</item><item>2</item><item>3</item><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>9</item><item>确定</item></string-array>

总结 (需要源码的下面有)

提示:源码自定义数字键盘

android 自定义数字键盘相关推荐

  1. android自定义数字键盘和字母键盘,Android自定义键盘的实现(数字键盘和字母键盘)...

    Android自定义键盘的实现(数字键盘和字母键盘) 发布时间:2020-09-04 03:18:48 来源:脚本之家 阅读:100 作者:浪淘沙xud 在项目中,产品对于输入方式会有特殊的要求,需要 ...

  2. android 支付数字键盘,微信小程序自定义数字键盘|仿支付宝、微信支付数字软键盘...

    (此图片来源于网络,如有侵权,请联系删除! ) 前几天有开发过一个html5仿支付宝.微信支付数字键盘,在某些特定场景下自定义数字键盘应用还是蛮广泛的,比如 小程序商城系统 需要零钱支付 ,会员卡支付 ...

  3. vue封装自定义数字键盘组件

    最近在公司做一个项目,简单来说就是web端微信公众号上的一个申请表单页面,随便如个图 环境: vue框架 + vant组件库 + 其它(这里用不上的,不说) 具体如图: 都知道,input输入框如果不 ...

  4. Android自定义安全键盘

    Android自定义安全键盘 Demo地址 主要功能:包含功能:数字+字母组合键盘.纯数字键盘.字符键盘,防止录屏截屏 . 项目主要是通过Recyclerview来进行实现的,项目整体结构使用了建造者 ...

  5. android 自定义车牌键盘(kotlin)

    android 自定义车牌键盘(kotlin) 前言 示例图 实现需求 定义键盘文件 核心代码 视频效果 汉字转化 项目链接 前言 平时停车缴费都要填车牌号码,就想着自己能不能也做个车牌键盘demo. ...

  6. android 调用数字键盘,微信调用支付数字键盘功能实现方法(Android)

    微信调用支付数字键盘功能实现方法(Android)现在微信支付.输入密码功能,已经开始使用自定义数字键盘,这样不仅更加方便.其效果着实精致.你知道微信支付和输入密码时自定义数字键盘是如何实现的? 不知 ...

  7. 小程序自定义数字键盘|仿微信支付、支付宝支付密码键盘

    微信小程序自定义键盘插件wcKeyboard|仿微信数字软键盘|仿支付宝自定义数字键盘|小程序自定义模拟系统键盘 前段时间有开发过一个html5仿支付宝.微信支付数字键盘,在某些情况下自定义数字键盘应 ...

  8. vue 自定义键盘组件_vue 自定义 数字键盘+mint UI MessageBox的应用

    功能: 实现自定义数字键盘,输入数字超过两位时不可输入 点击清空清空输入框内的值 提交时弹出提示框,并显示所输入的数字用--mint UI实现 效果图: 9. //将变量numberval赋给valu ...

  9. java数字时钟代码,Android自定义数字时钟代码,android自定义时钟,package jp.t

    Android自定义数字时钟代码,android自定义时钟,package jp.tpackage jp.tsmsogn.digitalclock;import java.util.Calendar; ...

  10. android自定义系统键盘,Android自定义软键盘

    [实例简介] Android自定义软键盘 [实例截图] [核心代码] keydemo └── keydemo ├── AndroidManifest.xml ├── bin │   ├── class ...

最新文章

  1. ubuntu16.04安装torch
  2. [POI 2009] gas 贪心
  3. 2014年考研计算机大纲解析:数据结构,2014年考研计算机大纲解析之数据结构
  4. 5折交叉验证_数据集的划分——交叉验证法
  5. C++三路比较运算符
  6. 【每日算法Day 81】面试经典题:关于丑数,你真的理解为什么这么算吗?
  7. 【学习笔记】浅识差分隐私
  8. 希尔密码_密码学中的希尔密码
  9. (一)绪论 | 如何判断某数据结构是逻辑结构还是存储结构,是线性结构还是非线性结构
  10. 80004005错误代码_WIN7错误代码0×80004005图文解决教程
  11. 荐书一本-----《天才在左,疯子在右》
  12. 改进ur_modern_driver包,提供ur_driver/URScript_srv服务
  13. 《谁说大象不能跳舞》值得一读
  14. PCL安装和环境配置
  15. 超详细的bat脚本常用命令及亲测示例
  16. 每日思考第 76 期:真正的死亡是被人遗忘
  17. sketch制作Android动画,Sketch制作GIF动画——基础篇(改良版)
  18. Java项目:Springboot汽车配件销售管理系统
  19. 《算法导论(原书第3版)》pdf
  20. 【socket】从计算机网络基础到socket编程——Windows Linux C语言 + Python实现(TCP+UDP)

热门文章

  1. smartbi v7 Linux,Smartbi版本更新
  2. RS485 光照度传感器 pc串口工具调试设备 亲身体验
  3. 基于微信小程序+JavaWeb+SSM开发的图书借阅小程序
  4. Java.MapReduce处理全国各省市疫情数据,上传Hadoop平台处理后的数据
  5. django 模型choice基本讲解
  6. ecshop模板支持php,ecshop模板支持php数据运算的代码实例
  7. html5输入框自动放大镜,html5输入框左边有一个放大镜图标,右边有按钮点击触发搜索...
  8. Matlab中计算图像的灰度值
  9. JavaScrupt就这么回事(转)
  10. 什么是VHDL?一文带你了解VHDL语言