与天地兮比寿,与日月兮齐光。这篇文章主要讲述如何制作Android自定义键盘?相关的知识,希望能为你提供帮助。
我想制作一个自定义键盘。我不知道如何在xml和activity中做到这一点。这张照片是我的键盘型号。它只需要数字。
答案首先,您将需要一个keyboard.xml
文件,该文件将放在res/xml
文件夹中(如果该文件夹不存在,则创建它)。
<
?xml version="1.0" encoding="utf-8"?>
<
Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="15%p"
android:keyHeight="15%p" >
<
Row>
<
Key android:codes="1"android:keyLabel="1" android:horizontalGap="4%p"/>
<
Key android:codes="2"android:keyLabel="2" android:horizontalGap="4%p"/>
<
Key android:codes="3"android:keyLabel="3" android:horizontalGap="4%p" />
<
Key android:codes="4"android:keyLabel="4" android:horizontalGap="4%p" />
<
Key android:codes="5"android:keyLabel="5" android:horizontalGap="4%p" />
<
/Row>
<
Row>
<
Key android:codes="6"android:keyLabel="6" android:horizontalGap="4%p"/>
<
Key android:codes="7"android:keyLabel="7" android:horizontalGap="4%p"/>
<
Key android:codes="8"android:keyLabel="8" android:horizontalGap="4%p" />
<
Key android:codes="9"android:keyLabel="9" android:horizontalGap="4%p" />
<
Key android:codes="0"android:keyLabel="0" android:horizontalGap="4%p" />
<
/Row>
<
Row>
<
Key android:codes="-1"android:keyIcon="@drawable/backspace" android:keyWidth="34%p" android:horizontalGap="4%p"/>
<
Key android:codes="100"android:keyLabel="Enter" android:keyWidth="53%p" android:horizontalGap="4%p"/>
<
/Row>
<
/Keyboard>
**请注意,您必须创建
backspace
drawable并将其放在res / drawable-ldpi文件夹中,其尺寸非常小(如18x18像素)然后在您希望它使用的xml文件中(TextView所在的位置),您应该添加以下代码:
<
RelativeLayout
...
>
.....<
android.inputmethodservice.KeyboardView
android:id="@+id/keyboardview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:visibility="gone"
/>
......<
/RelativeLayout>
**请注意,您将放置
android.inputmethodservice.KeyboardView
的xml文件必须是RelativeLayout
才能设置alignParentBottom="true"
(通常键盘显示在屏幕底部)然后你需要在
onCreate
的Activity
函数中添加以下代码,该函数处理你想要将键盘连接到的TextView
// Create the Keyboard
mKeyboard= new Keyboard(this,R.xml.keyboard);
// Lookup the KeyboardView
mKeyboardView= (KeyboardView)findViewById(R.id.keyboardview);
// Attach the keyboard to the view
mKeyboardView.setKeyboard( mKeyboard );
// Do not show the preview balloons
//mKeyboardView.setPreviewEnabled(false);
// Install the key handler
mKeyboardView.setOnKeyboardActionListener(mOnKeyboardActionListener);
**请注意,
mKeyboard
和mKeyboardView
是您必须创建的私有类变量。然后你需要以下函数来打开键盘(你必须通过
onClick
xml属性将它与TextView相关联)public void openKeyboard(View v)
{
mKeyboardView.setVisibility(View.VISIBLE);
mKeyboardView.setEnabled(true);
if( v!=null)((InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(v.getWindowToken(), 0);
}
最后你需要能够处理你事件的
OnKeyboardActionListener
private OnKeyboardActionListener mOnKeyboardActionListener = new OnKeyboardActionListener() {
@Override public void onKey(int primaryCode, int[] keyCodes)
{
//Here check the primaryCode to see which key is pressed
//based on the android:codes property
if(primaryCode==1)
{
Log.i("Key","You just pressed 1 button");
}
}@Override public void onPress(int arg0) {
}@Override public void onRelease(int primaryCode) {
}@Override public void onText(CharSequence text) {
}@Override public void swipeDown() {
}@Override public void swipeLeft() {
}@Override public void swipeRight() {
}@Override public void swipeUp() {
}
};
希望有所帮助!
【如何制作Android自定义键盘()】大部分代码都找到了here
另一答案 System keyboard这个答案告诉我们如何制作一个可以在用户手机上安装的任何应用程序中使用的自定义系统键盘。如果你想制作一个只能在你自己的应用程序中使用的键盘,那么see my other answer。
以下示例如下所示。您可以为任何键盘布局修改它。
文章图片
以下步骤说明如何创建可用的自定义系统键盘。我尽可能地尝试删除任何不必要的代码。如果您还需要其他功能,我最后会提供更多帮助的链接。
1. Start a new Android project我将我的项目命名为“自定义键盘”。随便打电话给你。这里没有什么特别的。我将离开
MainActivity
和“Hello World!”布局原样。2. Add the layout files将以下两个文件添加到应用程序的
res/layout
文件夹中:- keyboard_view.xml
- key_preview.xml
这个视图就像一个容纳我们键盘的容器。在这个例子中只有一个键盘,但你可以添加其他键盘并将它们交换进这个
KeyboardView
。<
?xml version="1.0" encoding="utf-8"?>
<
android.inputmethodservice.KeyboardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/keyboard_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:keyPreviewLayout="@layout/key_preview"
android:layout_alignParentBottom="true">
<
/android.inputmethodservice.KeyboardView>
key_preview.xml
键预览是按键盘键时弹出的布局。它只显示你正在按下的键(如果你的大指,胖指覆盖它)。这不是一个多选弹出窗口。为此你应该看看Candidates view。
<
?xml version="1.0" encoding="utf-8"?>
<
TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:background="@android:color/white"
android:textColor="@android:color/black"
android:textSize="30sp">
<
/TextView>
3. Add supporting xml files在
xml
文件夹中创建一个res
文件夹。 (右键单击res
并选择New>
Directory。)然后将以下两个xml文件添加到其中。 (右键单击
xml
文件夹,然后选择“新建”>
“XML资源文件”。)- number_pad.xml
- method.xml
这是它开始变得更有趣的地方。这个
Keyboard
定义了keys的布局。<
?xml version="1.0" encoding="utf-8"?>
<
Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="20%p"
android:horizontalGap="5dp"
android:verticalGap="5dp"
android:keyHeight="60dp">
<
Row>
<
Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/>
<
Key android:codes="50" android:keyLabel="2"/>
<
Key android:codes="51" android:keyLabel="3"/>
<
Key android:codes="52" android:keyLabel="4"/>
<
Key android:codes="53" android:keyLabel="5" android:keyEdgeFlags="right"/>
<
/Row>
<
Row>
<
Key android:codes="54" android:keyLabel="6" android
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 我无法使用我的Android使用IPv4访问我的笔记本
- 在Angular App中的Obseable POST请求中使用switchMap
- 什么是app(overlayImage in xmlns:app =“http://schemas.android.com/apk/res-auto())
- 点击劫持攻击(提防社交网络识别)
- 如何将你的站点添加到安全浏览工具以建立信任关系()
- 如何使用Cloudflare防火墙阻止Bot()
- 企业可提高应用程序安全性的5大漏洞赏金平台
- 商业雇佣道德黑客的6种有趣场景
- 7种最佳的开源防火墙来保护你的网络