如何创建一个输入法android?

时间:2014-11-21 11:45:26

标签: android android-softkeyboard android-input-method

我想创建一个类似 Emoji 的通用键盘。我正在关注 this tutorial

我希望主软键盘能够正常工作,或者我的意思是扩展它。只需要在符号显示时单击mModeChangeKey上的布局和事件。

当模式改变时,我想用表情符号显示我的键盘。并像其他表情符号一样添加它。

的Manifest.xml

  <service android:name="com.example.keyboardtesting.MyInputMethod"
        android:label="@string/app_name"
        android:permission="android.permission.BIND_INPUT_METHOD">
             <intent-filter>
                   <action android:name="android.view.InputMethod" />
             </intent-filter>

             <meta-data android:name="android.view.im"
                android:resource="@xml/method" />
    </service>

还添加了权限..

点击第一个按钮

startActivityForResult( new Intent(android.provider.Settings.ACTION_INPUT_METHOD_SETTINGS), 0);

点击第二个按钮

InputMethodManager inputmethodmanager = (InputMethodManager) getSystemService("input_method");

    if (inputmethodmanager != null)
    {
        inputmethodmanager.showInputMethodPicker();
    }

因为用户可以选择两者。我们不能以编程方式来做。我也经历了拉丁语和软键盘。但我仍然感到困惑。

MyInputMethod

public class MyInputMethod extends InputMethodService 
{
    private Keyboard mKeyboard;

    private KeyboardView mInputView;

    @Override 
    public void onInitializeInterface() 
    {
        mKeyboard = new Keyboard(this, R.xml.qwerty);
    }

    @Override
    public View onCreateInputView() 
    {
         mInputView = (KeyboardView) getLayoutInflater().inflate(
                 R.layout.input_black, null);

         mInputView.setKeyboard(mKeyboard);

         return mInputView;
    }
}

简单的字词:

我只是想在Android设备上显示我的键盘。我稍后会添加事件。

1 个答案:

答案 0 :(得分:0)

如果您想要确保键盘显示,您还需要添加其他文件。像这样。

创建method.xml文件

<?xml version="1.0" encoding="utf-8"?>
<input-method xmlns:android="http://schemas.android.com/apk/res/android">
<subtype
    android:label="@string/subtype_en_US"
    android:imeSubtypeLocale="en_US"
    android:imeSubtypeMode="keyboard" />
</input-method>

制作键盘布局。布局/ keyboard.xml

<?xml version="1.0" encoding="UTF-8"?>
<android.inputmethodservice.KeyboardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/keyboard"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:keyPreviewLayout ="@layout/preview"
/>

keyPreviewLayout是短暂弹出窗口的布局,只要按下键盘上的键,就会显示该布局。

布局/ preview.xml

<?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="#ffff00"   
    android:textStyle="bold"
    android:textSize="30sp"
    >    
</TextView>

接下来,您需要为功能制作qwerty.xml。而且您已经创建了服务类。但是你还没有实现OnKeyboardActionListener。确保你这样做。