欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

android自定義鍵盤,安卓自定義鍵盤布局

android自定義軟鍵盤支持多語言

支持。android自定義軟鍵盤支持阿拉伯語、英語、德語、意大利語、漢語、葡萄牙語和西班牙語等,還支持用各種新語言搜索表情符號的能力。

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的甘井子網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

【轉(zhuǎn)】Android軟鍵盤的全面解析

軟鍵盤其實是一個Dialog

InputMethodService為我們的輸入法創(chuàng)建了一個Dialog,并且對某些參數(shù)進行了設(shè)置,使之能夠在底部或者全屏顯示。當(dāng)我們點擊輸入框時,系統(tǒng)會對當(dāng)前的主窗口進行調(diào)整,以便留出相應(yīng)的空間來顯示該Dialog在底部,或者全屏。

其實這段話我們經(jīng)常在各種軟鍵盤博客所看到,但是大家并不知道Android是怎么為我們創(chuàng)建的這個Dialog,所以我先帶大家來看下軟鍵盤生成這塊的源碼,了解軟鍵盤的生成流程。

我們先來看一下InputMethodService的繼承關(guān)系:

因為InputMethodService屬于服務(wù),接下來我們先看一下服務(wù)的入口onCreate()方法:

通過上面的分析,我們懷疑這里的SoftInputWindow是軟鍵盤彈出創(chuàng)建的Dialog對象,下面我們看下SoftInputWindow的源碼。

看到這里大家就能明白了,為什么說軟鍵盤就是一個Dialog。而且這里通過設(shè)置Gravity.BOTTOM來控制當(dāng)前Dialog在Window中的位置。

在Android中,可以通過給Activity設(shè)置 windowSoftInputMode 這個屬性來控制軟鍵盤與Activity的主窗口的交互方式。

Activity 的主窗口與包含屏幕軟鍵盤的窗口的交互方式,該屬性的設(shè)置影響兩個方面:

該設(shè)置必須是下面所列的值之一,或者是一個“state…”值加上一個“adjust…”值的組合,在任一組中設(shè)置多個值(例如,多個“state…”值)都會產(chǎn)生未定義結(jié)果。各值之間使用垂直條 (|) 分隔。

下面將通過例子來介紹 adjustNoting 、 adjustUnspecified 、 adjustResize 、 adjustPan 在軟鍵盤彈出的區(qū)別:

非滾動布局xml

點擊最下面的EditText12

滾動布局xml

通過上面的例子,我們可以完全理解adjust系列的各個參數(shù)的作用。而軟鍵盤的顯示和隱藏這里面需要并不多,而且內(nèi)容并不算復(fù)雜,大家回去自己嘗試下就可以。

在日常開發(fā)中,如果需要將軟鍵盤的Enter鍵更改為其他鍵,可以設(shè)置其 android:imeOptions 屬性,這個屬性可以控制軟鍵盤的Enter鍵,以及橫屏情況下的軟鍵盤顯示狀態(tài)。

該設(shè)置必須是下面所列的值之一,或者是一個“action…”值加上一個“flag…”值的組合,在action…組中設(shè)置多個值(例如,多個“action…”值)都會產(chǎn)生未定義結(jié)果,而flag….可以設(shè)置多個。各值之間使用垂直條 (|) 分隔

控制軟鍵盤上的Enter鍵

橫屏下控制軟鍵盤

總結(jié)一下:

這里大部分的屬性,已經(jīng)介紹完畢,如果英語好的同學(xué),可以去看下官方文檔,可以更好的理解,并且本文以搜狗輸入法為實踐,可能其他的輸入法與其顯示的不同,但是功能應(yīng)該都是一樣的。

而如果要在橫屏狀態(tài)不希望軟鍵盤全屏顯示最好是將flagNoFullscreen和flagNoExtractUi結(jié)合使用,這樣體驗上會更好

android:imeOptions=”flagNoFullscreen|flagNoExtractUi”

Android官網(wǎng)的Api

如果需要監(jiān)聽軟鍵盤的右下角的按鍵,需要為EditText設(shè)置setOnEditorActionListener()監(jiān)聽:

上面的方式,只是展示了如何監(jiān)聽各個按鍵的方法,如果需要消費事件,則需要return true。

(1)第一次寫這么長的博客,感覺會有一些不足,各位看官如果有不合理的地方,或者有誤的地方請直接指出。

(2)本來想整理成一個Demo的,后來簡單看來下,該有的幾乎都貼出來了,有需要的可以按需復(fù)制就可以。

(3)寫完這篇博客之后,感覺博客干貨還是不多,所以定位這篇文章算是總結(jié)性質(zhì)加上實際案例性質(zhì)的博客。

(4)Android軟鍵盤的總結(jié)就差不多到這里,希望各位看官,如果看到這里有收獲,就點點贊,灌灌水,頂一波,這樣博主才有寫下去的動力。

(5)感謝小輝同學(xué)的校驗,調(diào)整了文章中不通順的地方。

1.徹底搞定Android開發(fā)中軟鍵盤的常見問題

2.Android UI(EditText)詳解

;fps=1

3.微信軟鍵盤布局閃動問題

如果需要做一個定制化鍵盤(以外型為主)的創(chuàng)業(yè),請問如何設(shè)計代碼來知道目前

1.自定義數(shù)字鍵盤

2.切換到隨機數(shù)字鍵盤

3.自定義確定和刪除等鍵(向外拋出接口)

使用方法:

1.在項目build.gradle文件中添加jitpack,添加jitpcak就夠了。allprojects{undefinedrepositories{undefinedjcenter()maven{url''}}}2.在module的build.gradle文件添加依賴compile'com.github.Simon986793021:NumberKeyboard:v1.0'3.在布局文件中添加布局android:id="@+id/keyboard_view"xmlns:android=""android:layout_width="match_parent"android:layout_height="wrap_content"android:focusable="true"android:paddingTop="0dp"android:focusableInTouchMode="true"android:keyBackground="@drawable/bg_keyboardview"android:keyPreviewOffset="0dp"android:keyTextColor="#000"android:shadowColor="#fff"android:shadowRadius="0.0"android:layout_alignParentBottom="true"/4.在MainActivity調(diào)用。editText=(EditText)findViewById(R.id.et_numberplate);changebutton=(Button)findViewById(R.id.bt_change_keyboard);finalOfoKeyboardkeyboard=newOfoKeyboard(MainActivity.this);//獲取到keyboard對象changebutton.setOnClickListener(newView.OnClickListener(){undefined@OverridepublicvoidonClick(Viewv){undefinedkeyboard.attachTo(editText,true);//eiditext綁定keyboard,true表示隨機數(shù)字}});editText.setOnClickListener(newView.OnClickListener(){undefined@OverridepublicvoidonClick(Viewv){undefinedkeyboard.attachTo(editText,false);//eiditext綁定keyboard,false表示普通數(shù)字鍵盤}});/*確定按鈕*/keyboard.setOnOkClick(newOfoKeyboard.OnOkClick(){undefined@OverridepublicvoidonOkClick(){undefinedLog.i("","點擊了確定");Toast.makeText(MainActivity.this,editText.getText().toString(),Toast.LENGTH_SHORT).show();}});//隱藏鍵盤按鈕keyboard.setOnCancelClick(newOfoKeyboard.OnCancelClcik(){undefined@OverridepublicvoidonCancelClick(){undefinedToast.makeText(MainActivity.this,"隱藏鍵盤",Toast.LENGTH_SHORT).show();}});只需要這些簡單的代碼就能夠?qū)崿F(xiàn)一個自己定義的鍵盤了。實現(xiàn)過程1.新建一個keyboard布局在看這個代碼之前需要了解keyboard的屬性:不清楚屬性,怎么畫頁面,不懂的請移步這篇博客在res新建一個xml文件,然后在xml新建一個keyboard.xml里面代碼如下xmlns:android=""android:keyHeight="9%p"android:keyWidth="25%p"android:horizontalGap="0dp"android:codes="49"android:keyLabel="1"/android:codes="50"android:keyLabel="2"/android:codes="51"android:keyLabel="3"/android:codes="-5"android:keyHeight="18%p"android:keyEdgeFlags="right"android:isRepeatable="true"android:keyIcon="@drawable/icon_delete_32dp"/android:codes="52"android:keyLabel="4"/android:codes="53"android:keyLabel="5"/android:codes="54"android:keyLabel="6"/android:codes="55"android:keyLabel="7"/android:codes="56"android:keyLabel="8"/android:codes="57"android:keyLabel="9"/android:codes="-4"android:keyLabel="確定"android:keyEdgeFlags="right"android:keyHeight="18%p"/android:codes="46"android:keyLabel="."/android:codes="48"android:keyLabel="0"/android:codes="-3"android:keyIcon="@drawable/icon_hide_keyboard"/這個布局就是自己自定義鍵盤的布局實現(xiàn),有了布局,顯然是不夠的。2.自定義KeyboardViewpackagecom.wind.keyboard;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.Rect;importandroid.graphics.Typeface;importandroid.graphics.drawable.Drawable;importandroid.inputmethodservice.Keyboard;importandroid.inputmethodservice.KeyboardView;importandroid.util.AttributeSet;importandroid.util.Log;importjava.lang.reflect.Field;importjava.util.List;/***Createdbyzhangcongon2017/8/24.*/publicclassOfoKeyboardViewextendsKeyboardView{undefinedprivateContextcontext;privateKeyboardkeyboard;publicOfoKeyboardView(Contextcontext,AttributeSetattrs){undefinedsuper(context,attrs);this.context=context;Log.i("","構(gòu)造函數(shù)被調(diào)用了");}/***重新畫一些按鍵*/@OverridepublicvoidonDraw(Canvascanvas){undefinedsuper.onDraw(canvas);keyboard=this.getKeyboard();Listkeys=null;if(keyboard!=null){undefinedkeys=keyboard.getKeys();}if(keys!=null){undefinedfor(Keyboard.Keykey:keys){undefined//數(shù)字鍵盤的處理if(key.codes[0]==-4){undefineddrawKeyBackground(R.drawable.bg_keyboardview_yes,canvas,key);drawText(canvas,key);}}}}privatevoiddrawKeyBackground(intdrawableId,Canvascanvas,Keyboard.Keykey){undefinedDrawablenpd=context.getResources().getDrawable(drawableId);int[]drawableState=key.getCurrentDrawableState();if(key.codes[0]!=0){undefinednpd.setState(drawableState);}npd.setBounds(key.x,key.y,key.x+key.width,key.y+key.height);npd.draw(canvas);}privatevoiddrawText(Canvascanvas,Keyboard.Keykey){undefinedRectbounds=newRect();Paintpaint=newPaint();paint.setTextAlign(Paint.Align.CENTER);paint.setAntiAlias(true);paint.setColor(Color.WHITE);if(key.label!=null){undefinedStringlabel=key.label.toString();Fieldfield;if(label.length()1key.codes.length","attachTo");this.editText=editText;hideSystemSofeKeyboard(activity,editText);showSoftKeyboard();}privatevoidshowSoftKeyboard(){undefinedif(keyboard==null){undefinedkeyboard=newKeyboard(activity,R.xml.keyboard);}if(keyboardView==null){undefinedkeyboardView=(OfoKeyboardView)activity.findViewById(R.id.keyboard_view);}if(isRandom){undefinedrandomKeyboardNumber();}else{undefinedkeyboardView.setKeyboard(keyboard);}keyboardView.setEnabled(true);keyboardView.setPreviewEnabled(false);keyboardView.setVisibility(View.VISIBLE);keyboardView.setOnKeyboardActionListener(listener);}privateKeyboardView.OnKeyboardActionListenerlistener=newKeyboardView.OnKeyboardActionListener(){undefined@OverridepublicvoidonPress(intprimaryCode){undefined}@OverridepublicvoidonRelease(intprimaryCode){undefined}@OverridepublicvoidonKey(intprimaryCode,int[]keyCodes){undefinedEditableeditable=editText.getText();intstart=editText.getSelectionStart();if(primaryCode==Keyboard.KEYCODE_DELETE)//keycodes為-5{undefinedif(editable!=nulleditable.length()0){undefinedif(start0){undefinededitable.delete(start-1,start);}}}elseif(primaryCode==Keyboard.KEYCODE_CANCEL){undefinedhideKeyBoard();if(mCancelClick!=null){undefinedmCancelClick.onCancelClick();}}elseif(primaryCode==Keyboard.KEYCODE_DONE){undefinedhideKeyBoard();if(mOkClick!=null){undefinedmOkClick.onOkClick();}}else{undefinedLog.i("",primaryCode+"1");Log.i("",(char)primaryCode+"2");editable.insert(start,Character.toString((char)primaryCode));}}@OverridepublicvoidonText(CharSequencetext){undefined}@OverridepublicvoidswipeLeft(){undefined}@OverridepublicvoidswipeRight(){undefined}@OverridepublicvoidswipeDown(){undefined}@OverridepublicvoidswipeUp(){undefined}};publicinterfaceOnOkClick{undefinedvoidonOkClick();}publicinterfaceOnCancelClcik{undefinedvoidonCancelClick();}publicOnOkClickmOkClick;publicOnCancelClcikmCancelClick;publicvoidsetOnOkClick(OnOkClickonOkClick){undefinedthis.mOkClick=onOkClick;}publicvoidsetOnCancelClick(OnCancelClcikonCancelClick){undefinedthis.mCancelClick=onCancelClick;}privatevoidhideKeyBoard(){undefinedintvisibility=keyboardView.getVisibility();if(visibility==KeyboardView.VISIBLE){undefinedkeyboardView.setVisibility(KeyboardView.GONE);}}privatebooleanisNumber(Stringstr){undefinedStringwordstr="0123456789";returnwordstr.contains(str);}privatevoidrandomKeyboardNumber(){undefinedListkeyList=keyboard.getKeys();//查找出0-9的數(shù)字鍵ListnewkeyList=newArrayList();for(inti=0;i

回答于?2022-04-01

關(guān)于Android 自定義鍵盤的問題

在activity中使用的時候,首先要屏蔽掉系統(tǒng)軟鍵盤,然后在輸入框獲取焦點的時候彈出你的鍵盤就OK了,鍵盤你可以用button來實現(xiàn),或者就用一張圖片算坐標重寫ontouch都行;點數(shù)字的時候你就把你點的那個數(shù)字settext到你的輸入框里,delete的時候你就把你輸入框的文字去掉一位就OK了。如果讓我做的話思路大概是這樣的!

android 自定義軟鍵盤 鍵盤怎么自定義改鍵

自定義鍵盤整個過程如下:

1.第一步,根據(jù)你的需求,需要定制怎樣的鍵盤,需要幾行幾列,準備好鍵盤按鍵的背景圖片,鍵盤的尺寸,在res文件下,新建一個xml文件,下面放字母、數(shù)字、標點符號鍵盤的布局文件,我的需求是這樣的:

可以看到上述的鍵盤需要美工做的圖片有幾張:字母和數(shù)字的按鍵的基本背景(需要圓角)、刪除按鍵、切換大小寫的圖標、點擊隱藏鍵盤的下拉按鍵,設(shè)置鍵盤的布局為白色就可以大致實現(xiàn)上述的效果。這里我在寫鍵盤文件的時候遇到幾個難點,分享如下:

A.按鍵之間的空隙和鍵盤整體高度,需要不斷的調(diào)整,不可能一下子就可以布置好的,特別字母鍵盤里的刪除鍵,高度是兩個按鍵,所以需要反復(fù)調(diào)試。

B.為了解決點擊下拉按鈕隱藏鍵盤的功能:放棄原先點擊下拉按鈕,隱藏整個鍵盤的布局的方案,而改用在鍵盤文件中再加一整行,只有一個按鍵,就是done,完成按鈕,這是系統(tǒng)定義好的完成功能,code值為:??-3。(所以我們發(fā)現(xiàn)很多系統(tǒng)自動的比如切換大小寫、刪除功能、空格功能,都是已經(jīng)定義好了code值,只需要找到對應(yīng)的含義,直接定義使用就可以了。)

文章題目:android自定義鍵盤,安卓自定義鍵盤布局
網(wǎng)頁網(wǎng)址:http://chinadenli.net/article30/dsgecpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站品牌網(wǎng)站制作服務(wù)器托管面包屑導(dǎo)航手機網(wǎng)站建設(shè)網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化