我是
interested
,在Android中创建类似Whatsapp的表情符号键盘。我成功创建了Emoji keyboard
。
现在,我想在自定义键盘(InputMethod(中添加两个滚动条。
第一个是keyboard
上方的horizontal scroll
(如kitkat中(,用于选择类别like(Nature,People,Place,Symbols
(。
其次我想添加表情符号的垂直网格视图。因此,无需反复单击categories
即可获得完整列表。
到目前为止我尝试了什么
我已经创建了类似的input.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<com.zeuxislo.emojikeyboard.EmojiKeyboardView
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_gravity="bottom"
android:keyBackground="@drawable/samplekeybackground" >
</com.zeuxislo.emojikeyboard.EmojiKeyboardView>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Wao what a keyBoard"
android:textSize="24sp" />
</LinearLayout>
</ScrollView>
并且在SoftKeyboard.java
中
public View onCreateInputView()
{
LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
testInput = inflater.inflate(R.layout.test_input, null);
mInputView = (KeyboardView) testInput.findViewById(R.id.keyboard);
this.mInputView = (KeyboardView) this.getLayoutInflater().inflate(R.layout.input, null);
//this.mInputView = (KeyboardView) this.getLayoutInflater().inflate(R.layout.input, null);
this.mInputView.setOnKeyboardActionListener(this);
this.mInputView.setKeyboard(this.mQwertyKeyboard);
return this.mInputView;
}
还尝试将TextView放在布局的上方和下方。但它没有显示出来。我该怎么做?
我还尝试添加一个类似HorizontalScrollView
的
<Keyboard android:keyWidth="10.000002%p" android:keyHeight="@dimen/key_height" android:horizontalGap="0.0px" android:verticalGap="0.0px"
xmlns:android="http://schemas.android.com/apk/res/android">
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Row android:rowEdgeFlags="bottom">
<Key android:keyWidth="14.999998%p" android:codes="-1009" android:keyEdgeFlags="left" android:keyIcon="@drawable/sym_keyboard_done" />
<Key android:keyWidth="10.000002%p" android:codes="-1010" android:keyLabel="ABC" />
<Key android:keyWidth="10.000002%p" android:codes="-1011" android:keyLabel="123" />
<Key android:keyWidth="10.000002%p" android:codes="-1012" android:keyIcon="@drawable/e415" />
<Key android:keyWidth="10.000002%p" android:codes="-1013" android:keyIcon="@drawable/e04a" />
<Key android:keyWidth="10.000002%p" android:codes="-1014" android:keyIcon="@drawable/e033" />
<Key android:keyWidth="10.000002%p" android:codes="-1015" android:keyIcon="@drawable/e01d" />
<Key android:keyWidth="10.000002%p" android:codes="-1016" android:keyIcon="@drawable/e214" />
<Key android:keyWidth="14.999998%p" android:codes="-1017" android:keyEdgeFlags="right" android:keyIcon="@drawable/sym_keyboard_return" />
<Key android:keyWidth="14.999998%p" android:codes="-1021" android:keyEdgeFlags="left" android:keyIcon="@drawable/sym_keyboard_done" />
<Key android:keyWidth="10.000002%p" android:codes="-1022" android:keyLabel="ABC" />
<Key android:keyWidth="10.000002%p" android:codes="-1023" android:keyLabel="123" />
<Key android:keyWidth="10.000002%p" android:codes="-1024" android:keyIcon="@drawable/e415" />
<Key android:keyWidth="10.000002%p" android:codes="-1025" android:keyIcon="@drawable/e04a" />
</Row>
</HorizontalScrollView>
</Keyboard >
本质上,您为表情符号键盘所做的一切都是创建键盘大小的视图,然后用与表情符号对应的图像文件填充该视图。每个图像就像一个按钮,并将适当的表情符号传递给inputConnection。
我发现表情符号键盘的最佳实现是滑动表情键盘。我能够分叉这个项目并进行清理,并对其进行了相当大的改进。你可以看看我的表情板,试着理解我使用的方法。
2022更新:
这是我找到的最好的库:GitHub。它运行完美,外观很棒,你甚至可以选择你想要的表情符号风格(包括iOS、谷歌、推特(。用法也很简单,解释得很好。