小编Rus*_*lan的帖子

如何使用ActionDone按钮实现Multiline EditText(不带Enter按钮)

我有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按钮?

android multiline ime android-edittext imeoptions

18
推荐指数
3
解决办法
1万
查看次数

VideoView:如何在播放视频时始终显示MediaController

我有一个非常简单的任务-只是在播放视频时显示播放控件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)

很好,它可以正常工作-控件永远不会隐藏,但是不幸的是,硬件“后退”按钮停止工作。如果没有在第一次点击时覆盖硬件“后退”按钮,则关闭媒体控件,而在第二次点击时,按预期将用户带到上一个屏幕。

有没有可行的解决方案?

video android mediacontroller android-videoview

5
推荐指数
2
解决办法
4980
查看次数