我有EditText,用于在消息(电子邮件,短信)上输入内容.我希望消息能够立即发布在ActionDone按钮上.我使用以下代码:
message.setOnEditorActionListener((textView, i, keyEvent) -> {
switch (i) {
case EditorInfo.IME_ACTION_DONE:
if (messageCanBePosted()) {
SoftKeyboard.hide(message);
postMessage();
return true;
} else {
return false;
}
default:
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
但我也希望这个消息字段是多行的,就像在任何其他信使应用程序中一样.我可以用这条线来实现它:
android:inputType="textMultiLine"
Run Code Online (Sandbox Code Playgroud)
问题是在添加此行后,ActionDone按钮开始像Enter按钮一样.所以我EditorInfo.IME_ACTION_DONE从来没有调用过捕获的回调.因此,每次用户按下该按钮光标移动到新行而不是发布消息.
如何保持EditText的多行行为(在多行显示文本的能力)和ActionDone按钮?
我有一个非常简单的任务-只是在播放视频时显示播放控件VideoView。但是我解决不了。
这是我用于初始化VideoView和设置的代码MediaController:
videoView.setVideoURI(Uri.parse(videoUrl));
MediaController mediaController = new MediaController(this);
videoView.setMediaController(mediaController);
videoView.setKeepScreenOn(true);
videoView.setOnPreparedListener(mp -> {
progress.setVisibility(View.GONE);
videoView.start();
mediaController.show(0);
});
Run Code Online (Sandbox Code Playgroud)
问题是mediaController.show(0)没有任何效果。控件仅显示3秒钟,然后消失。
我也尝试重写MediaController的hide()方法:
@Override public void hide() {}
Run Code Online (Sandbox Code Playgroud)
很好,它可以正常工作-控件永远不会隐藏,但是不幸的是,硬件“后退”按钮停止工作。如果没有在第一次点击时覆盖硬件“后退”按钮,则关闭媒体控件,而在第二次点击时,按预期将用户带到上一个屏幕。
有没有可行的解决方案?