我提到了 https://github.com/vanniktech/Emoji
但我得到一个错误。我做了他所说的一切
final EmojiPopup emojiPopup = EmojiPopup.Builder.fromRootView(rootView).build(emojiEditText);
(下面是“打开EmojiPopup执行上面的代码:”行)
无法解决rootView
我无法理解这里的rootview
是什么。
提前多多感谢
答案 0 :(得分:0)
rootView是布局xml文件的rootView,它将用于计算键盘的高度。 emojiEditText是您在布局xml文件中声明的EmojiEditText。
这将是一个View子类,您可以通过膨胀xml布局来实例化它。
他在示例中使用的布局是this one,其夸大如下:
rootView = (ViewGroup) findViewById(R.id.main_activity_root_view);
已提取from his own code samples 。这将是上例中的rootView。
答案 1 :(得分:0)
我遇到了同样的问题...
首先在您的 splash活动或应用程序类中安装emoji安装程序-基本上,必须在活动中的onCreate中将布局放大之前执行它。否则,布局将无法识别此<com.vanniktech.emoji.EmojiEditText />
。
// Init Emoji
EmojiManager.install(new IosEmojiProvider());
您还需要一个jugutier解释过的rootview。
在您的 xml文件中,声明这样的视图窗口小部件(用于约束布局)
<View
android:id="@+id/a_chat_v_keyboard"
android:layout_width="match_parent"
android:layout_height="200dp"
app:layout_constraintBottom_toTopOf="@+id/view3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent" />
您可以在活动课程中使用以下内容。
声明
private View vKeyboard;
绑定
vKeyboard = findViewById(R.id.a_chat_v_keyboard);
然后在您的活动中,您可以像这样弹出键盘
final EmojiPopup emojiPopup = EmojiPopup.Builder.fromRootView(vKeyboard)
.build(etTextMessage);
ivEmoticonToggle.setTag(1);
ivEmoticonToggle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
emojiPopup.toggle();
if (ivEmoticonToggle.getTag().equals(1)) {
ivEmoticonToggle.setImageResource(R.drawable.keyboard);
ivEmoticonToggle.setTag(2);
} else {
ivEmoticonToggle.setImageResource(R.drawable.emoticon);
ivEmoticonToggle.setTag(1);
}
}
});
答案 2 :(得分:0)
如果您在 FirstActivity 以外的任何 Activity 中使用 EmojiEditText,请使用
在第一个 Activity 中安装 EmojiEmojiManager.install(new IosEmojiProvider());
或者如果你在 FirstActivity 中使用它,那么创建一个由 Application 类扩展的新类,并将这一行放在 onCreate 方法中
EmojiManager.install(new IosEmojiProvider());
并将这一行放在清单文件中的应用程序标签中
android:name=".YourClassName"