布局:

<?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:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="48dp"><TextViewandroid:id="@+id/number_1"style="@style/number_keyboard"android:text="1" /><TextViewandroid:id="@+id/number_2"style="@style/number_keyboard"android:text="2" /><TextViewandroid:id="@+id/number_3"style="@style/number_keyboard"android:text="3" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="48dp"><TextViewandroid:id="@+id/number_4"style="@style/number_keyboard"android:text="4" /><TextViewandroid:id="@+id/number_5"style="@style/number_keyboard"android:text="5" /><TextViewandroid:id="@+id/number_6"style="@style/number_keyboard"android:text="6" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="48dp"><TextViewandroid:id="@+id/number_7"style="@style/number_keyboard"android:text="7" /><TextViewandroid:id="@+id/number_8"style="@style/number_keyboard"android:text="8" /><TextViewandroid:id="@+id/number_9"style="@style/number_keyboard"android:text="9" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="48dp"><ImageViewandroid:id="@+id/number_clear_last"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:padding="15dp"android:src="@drawable/keyboard_delete_img"android:background="@drawable/number_keyboard_selecter"/><TextViewandroid:id="@+id/number_0"style="@style/number_keyboard"android:text="0" /><TextViewandroid:id="@+id/number_enter"style="@style/number_keyboard_enter"android:text="进入"android:textColor="@drawable/keyboard_enter_textcolor_selecter"/></LinearLayout>
</LinearLayout>

风格:

    <style name="number_keyboard"><item name="android:layout_width">0dp</item><item name="android:layout_height">match_parent</item><item name="android:layout_weight">1</item><item name="android:textSize">24sp</item><item name="android:gravity">center</item><item name="android:background">@drawable/number_keyboard_selecter</item></style><style name="number_keyboard_enter"><item name="android:layout_width">0dp</item><item name="android:layout_height">match_parent</item><item name="android:layout_weight">1</item><item name="android:textSize">24sp</item><item name="android:gravity">center</item><item name="android:background">@drawable/number_keyboard_enter_selecter</item></style>

selector

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true"><shape><stroke android:width="0.5dp" android:color="@color/ccccccc"></stroke><solid android:color="@color/c4188fe"></solid></shape></item><item android:state_pressed="false"><shape><stroke android:width="0.5dp" android:color="@color/ccccccc"></stroke><solid android:color="@color/white"></solid></shape></item>
</selector>

java类:

public class NumberKeyboardDialog extends RelativeLayout {@BindView(R.id.number_1)TextView number1;@BindView(R.id.number_2)TextView number2;@BindView(R.id.number_3)TextView number3;@BindView(R.id.number_4)TextView number4;@BindView(R.id.number_5)TextView number5;@BindView(R.id.number_6)TextView number6;@BindView(R.id.number_7)TextView number7;@BindView(R.id.number_8)TextView number8;@BindView(R.id.number_9)TextView number9;@BindView(R.id.number_clear_last)ImageView numberClearLast;@BindView(R.id.number_0)TextView number0;@BindView(R.id.number_enter)TextView numberEnter;private NumberClickListener numberClickListener;private AlertDialog numberDialog;public NumberKeyboardDialog(Context context) {super(context);}public NumberKeyboardDialog(Context context, AttributeSet attrs) {super(context, attrs);}public NumberKeyboardDialog(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}public void show(Context context) {View view = LayoutInflater.from(context).inflate(R.layout.number_keyboard, null);ButterKnife.bind(this, view);AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.DialogTheme);builder.setView(view);numberDialog = builder.create();BottomDialogUtils.setBottom(numberDialog);numberDialog.show();}@OnClick({R.id.number_1, R.id.number_2, R.id.number_3, R.id.number_4, R.id.number_5, R.id.number_6, R.id.number_7, R.id.number_8, R.id.number_9, R.id.number_0, R.id.number_clear_last, R.id.number_enter})public void onClick(View view) {switch (view.getId()) {case R.id.number_1:numberClickListener.clickNumber(number1.getText().toString());break;case R.id.number_2:numberClickListener.clickNumber(number2.getText().toString());break;case R.id.number_3:numberClickListener.clickNumber(number3.getText().toString());break;case R.id.number_4:numberClickListener.clickNumber(number4.getText().toString());break;case R.id.number_5:numberClickListener.clickNumber(number5.getText().toString());break;case R.id.number_6:numberClickListener.clickNumber(number6.getText().toString());break;case R.id.number_7:numberClickListener.clickNumber(number7.getText().toString());break;case R.id.number_8:numberClickListener.clickNumber(number8.getText().toString());break;case R.id.number_9:numberClickListener.clickNumber(number9.getText().toString());break;case R.id.number_0:numberClickListener.clickNumber0(number0.getText().toString());break;case R.id.number_clear_last:numberClickListener.clickClearLast();break;case R.id.number_enter:numberClickListener.clickEnter();numberDialog.dismiss();break;}}@OnLongClick({R.id.number_clear_last})public boolean onLongClick(View view) {switch (view.getId()) {case R.id.number_clear_last:numberClickListener.longClickClearLast();break;}return false;}public void setNumberClickListener(NumberClickListener numberClickListener) {this.numberClickListener = numberClickListener;}public interface NumberClickListener {void clickNumber(String number);void clickNumber0(String number0);void clickClearLast();void longClickClearLast();void clickEnter();}
}

调用:

 /*** 房间号输入监听*/private void setRoomNumberClear() {roomIdInput.addTextChangedListener(new TextWatcher() {private CharSequence temp;@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {temp = s;}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {}@Overridepublic void afterTextChanged(Editable s) {if (roomIdInput.getText().toString().length() > 0) {//限制长度
                    roomIdClear.setVisibility(View.VISIBLE);} else {roomIdClear.setVisibility(View.GONE);}}});SoftKeyBoardListener.setListener(getActivity(), new SoftKeyBoardListener.OnSoftKeyBoardChangeListener() {@Overridepublic void keyBoardShow(int height) {if (null == getActivity()) {return;}((MainActivity) getActivity()).main_menu.setVisibility(View.GONE);((MainActivity) getActivity()).layoutCommunity.setVisibility(View.GONE);}@Overridepublic void keyBoardHide(int height) {if (null == getActivity()) {return;}((MainActivity) getActivity()).main_menu.setVisibility(View.VISIBLE);((MainActivity) getActivity()).layoutCommunity.setVisibility(View.VISIBLE);}});}private void initNumberListener() {numberDialog.setNumberClickListener(new NumberKeyboardDialog.NumberClickListener() {@Overridepublic void clickNumber(String number) {String roomInput = roomIdInput.getText().toString();roomIdInput.setText(roomInput + number);roomIdInput.setSelection(roomInput.length() + 1);}@Overridepublic void clickNumber0(String number0) {String roomInput = roomIdInput.getText().toString();//0不能在第一位if (!TextUtils.isEmpty(roomInput)) {roomIdInput.setText(roomInput + number0);roomIdInput.setSelection(roomInput.length() + 1);}}@Overridepublic void clickClearLast() {String roomInput = roomIdInput.getText().toString();if (roomIdInput.length() > 0) {roomIdInput.setText(roomInput.substring(0, roomIdInput.length() - 1));roomIdInput.setSelection(roomInput.length() - 1);}}@Overridepublic void longClickClearLast() {roomIdInput.setText("");}@Overridepublic void clickEnter() {final String roomId = roomIdInput.getText().toString();if (TextUtils.isEmpty(roomId)) {Toast.makeText(getActivity(), "请输入房间号", Toast.LENGTH_SHORT).show();} else {LiveRoomAPI.getTopicInfo(roomId, new BaseCallBack<TopicInfoResponseEntity>() {@Overridepublic void onSuccess(Response<TopicInfoResponseEntity> response) {//跳转到直播间Intent intent = new Intent(getActivity(), LiveroomInfoActivity.class);intent.putExtra(IntentKey.topicId, roomId);startActivity(intent);}@Overridepublic void onFailure(StateException exception) {Toast.makeText(getActivity(), exception.getMessage().toString(), Toast.LENGTH_SHORT).show();}});}}});}/*** 设置不调用系统键盘*/private void initKeyBoard() {if (android.os.Build.VERSION.SDK_INT <= 10) {roomIdInput.setInputType(InputType.TYPE_NULL);} else {getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);try {Class<EditText> cls = EditText.class;Method setShowSoftInputOnFocus;setShowSoftInputOnFocus = cls.getMethod("setShowSoftInputOnFocus",boolean.class);setShowSoftInputOnFocus.setAccessible(true);setShowSoftInputOnFocus.invoke(roomIdInput, false);} catch (Exception e) {e.printStackTrace();}}initNumberListener();}

封装起来更好用

转载于:https://www.cnblogs.com/anni-qianqian/p/7451853.html

自定义数字软键盘--封装版相关推荐

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

    在项目中,产品对于输入方式会有特殊的要求,需要对输入方式增加特定的限制,这就需要采用自定义键盘.本文主要讲述数字键盘和字母键盘的自定义实现. 自定义键盘的实现步骤如下: 自定义CustomKeyboa ...

  2. Android 自定义安全软键盘 SafeKeyboard 开发详细说明 2.0

    Android 自定义安全软键盘 SafeKeyboard 开发详细说明 2.0 源码地址:GitHub:    https://github.com/SValence/SafeKeyboard 注意 ...

  3. Qt开发-数字软键盘

    最近项目做触屏界面,需要使用到数字软键盘. 参考了以下内容: Qt实战开发-数字软键盘:https://blog.csdn.net/Osean_li/article/details/60882890 ...

  4. EMWIN数字软键盘设计

    最近学习stm32的emwin界面,编写了一个数字软键盘的功能,其中遇到了一些问题,也学到了一些经验.我想要实现的功能是在如图所示的界面下,点击文本框弹出软键盘,能够通过软键盘输入0到9和小数点,ta ...

  5. Qt Quick QML实现自定义虚拟软键盘详解

    Qt Quick QML实现自定义虚拟软键盘详解 在Qt5.8版本推出的QML软键盘功能中,有两种实现方案.一种是基于中文汉字数据库,另一种是基于Google拼音输入引擎.然而,相比于官方软键盘,这两 ...

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

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

  7. Android开发笔记(一百四十八)自定义输入法软键盘

    手机上输入文字,都是通过系统自带的软键盘,这个软键盘可以是Android自带的,也可以是第三方软键盘如搜狗输入法.多数情况下面,系统自带的软键盘已经够用了,可是总有少数情况,系统软键盘无法满足开发者的 ...

  8. Android自定义记账软键盘(仿鲨鱼记账的记账功能)

    鲨鱼记账App效果: 本文实现的效果图: 本文 不是什么原理分析,属于使用工具,不再具体分析.直接贴图贴代码了 自定义软键盘的XML模版 注:android:codes的值,请参考ASCII < ...

  9. android调用数字软键盘设置(EditText属性)

    在某些时候我们要设置EditText调用数字键盘,省去在中文键盘下去切换成数字键盘,怎么做比较合适呢? 答案很简单:EditText设置android:numeric="integer&qu ...

最新文章

  1. 每日一则 LeetCode: Add Two Numbers
  2. openssh实现key验证免密码登录
  3. c语言程序开发中连接是,C语言中等待socket连接和对socket定位的方法
  4. POJ1942-Paths On a Grid-组合数学
  5. mysql set语句_不得不注意!那些容易被忽视的MySQL字符集问题?
  6. Android Activity无法启动。
  7. docker 安装azkaban_azkaban安装
  8. java分布式和集成式_【分布式java应用笔记】分布式与soa
  9. c 语言 循环判断语句,C值循环语句(七)
  10. 单例设计模式全局缓存accessToken
  11. 2022年全球及中国MICC电缆行业运行战略规划与未来投资策略分析报告
  12. 计算机c盘用户里的APPDATA,什么是appdata C盘appdata可以删除吗
  13. SpringCloud(三)了解了概念,现在来验证一下,玩个小案例
  14. Java环境变量配置cobalt strick4.4启动
  15. 【Google】【内部样式表】【外部样式表:听力地点方向题】【设置字体间距】【多类、子元素选择器】【网页设计与网站开发HTML、CSS、JavaScript】【第 8 章】CSS基础——实验题1-6
  16. python兔子编程_Python兔子生兔子算法,编程练习题实例十一
  17. 大恒相机开发(大恒SDK+opencv开发)笔记1
  18. 为啥不建议写内联样式?
  19. python实现水滴筹页面的数据统计
  20. 【笔记】二重积分概念与计算

热门文章

  1. join left 大数据_Java并发编程笔记-JDK内置并行执行框架Fork/Join
  2. solr 4.8 mysql_solr 4.8+mysql數據庫數據導入 + mmseg4j中文全文索引 配置筆記
  3. android注入 定位,[原创]修改源码实现全局(无需root)注入躲开注入检测
  4. a1278 win10声卡驱动_windows安装系列教程—驱动安装
  5. php程序内存优化之数组操作优化
  6. 微信小程序之ajax服务器交互及页面渲染
  7. Zookeeper一致性级别分析,终于彻底把握了
  8. 【Ubuntu入门到精通系列讲解】常用其他命令(find ln tar apt)等速查
  9. 名片去噪识别-aip
  10. 在合并单元格中数组公式无效_Excel中合并单元格困扰多年的难题,终于被我搞定了...