8

我将我的问题简化为可以重现的最小示例。

所以:

  • 1 个带有 VideoView 和 ImageView 的活动。
  • 单击 ImageView 后会显示 AlertDialog。
  • AlertDialog 有 1 个 EditText 字段。
  • 我触摸这个 EditText 并显示标准的 Android 键盘。
  • 关闭键盘。
  • 关闭对话框。

问题: VideoView 的边框(黑色矩形)被扩展,因此 ImageView 不再显示。

任何帮助表示赞赏!谢谢。

前 后

代码:

MainActivity.java

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.VideoView;

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Activity act = this;
    final VideoView videoView = (VideoView) findViewById(R.id.videoView1);
    videoView.setVideoPath("/mnt/sdcard/s1ep01.mp4");
    videoView.requestFocus();
    findViewById(R.id.imageView1).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            AlertDialog.Builder builder = new AlertDialog.Builder(act);
            View view = LayoutInflater.from(act).inflate(R.layout.dialog, null);
            builder.setView(view);
            builder.setPositiveButton("Save translation", null);
            builder.setNegativeButton("Cancel", null);
            AlertDialog dialog = builder.create();
            dialog.show();
        }
    });
}
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<VideoView
    android:id="@+id/videoView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true" />

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/videoView1"
    android:src="@android:drawable/btn_dialog" />

</RelativeLayout>

对话框.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

</RelativeLayout>
4

1 回答 1

3

作为临时解决方案,我创建了一个 Runnable 使 VideoView 不可见,然后在 200 毫秒后使其可见:

// Hide the VideoView
videoLayout.setVisibility(View.INVISIBLE);

// create a handler to handle the delayed runnable request
new Handler().postDelayed(new Runnable() {

    @Override
    public void run() {
        // After the 200 millis (which are passes as a second parameter to this postDelayed() method in the last line of the code, this handler will invoke the following method :

        // run on UI so you can set the Visibitity of the UI elements
        runOnUiThread(new Runnable() {
     @Override
            public void run() {videoLayout.setVisibility(View.VISIBLE);}    // make it visible again
 });
    }
}, 200);    // this is the second parameter which decides when this handler will run it's run() method

希望这个临时解决方案现在有帮助

当您的键盘隐藏时调用此方法,例如在 ENTER 键上,或者当您触摸键盘外的某个视图以隐藏它时......但不要将它放在活动的 onTouchEvent() 或 onUserInteraction 中,所以不要保留闪烁

于 2013-09-26T11:13:52.007 回答