RelativeLayout添加2个VideoView层级错误

雕·不懒惰 2021-01-13 11:27:22

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

</RelativeLayout>

private RelativeLayout layout;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.empty);
layout = findViewById(R.id.layMain);
addView();
}

private void addView() {

RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
params1.height = 800;
params1.width = 1080;
params1.setMargins(0, 100, 0, 0);
VideoView videoView1 = new VideoView(this);
Uri uri1 = Uri.parse(Environment.getExternalStorageDirectory() + File.separator +
"ca0b8818341dd777b953017d731a22d1.mp4");
videoView1.setVideoURI(uri1);
videoView1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setLooping(true);
mp.start();
}
});
videoView1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.reset();
}
});


RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
params2.height = 400;
params2.width = 200;
VideoView videoView2 = new VideoView(this);
Uri uri2 = Uri.parse(Environment.getExternalStorageDirectory() +
File.separator+"cef228dfbc0f2b71bb365cf41a1376b7.mp4");
videoView2.setVideoURI(uri2);
videoView2.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setLooping(true);
mp.start();
}
});
videoView2.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.reset();
}
});
layout.addView(videoView1, 0, params1);
layout.addView(videoView2, 1, params2);
videoView2.bringToFront();
}
不管是先add videoView1 还是先add videoView2,先添加的都是在上层覆盖了后添加的
换成ImageView,TextView都是正常的
求怎么解决
...全文
1292 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_45767368 2021-01-14
  • 打赏
  • 举报
回复
望采纳
weixin_45767368 2021-01-14
  • 打赏
  • 举报
回复
你好,我将你的代码copy到我的这边,运行在android 9设备,然后改变以下代码, 情况1(videoView2最上层) layout.addView(videoView1, 0, params1); layout.addView(videoView2, 1, params2); videoView2.bringToFront(); 情况2(videoView2最上层) layout.addView(videoView2, 0, params2); layout.addView(videoView1, 1, params1); videoView2.bringToFront(); 情况1(videoView2最上层) layout.addView(videoView1, 0, params1); layout.addView(videoView2, 1, params2); //videoView2.bringToFront(); 情况1(videoView1最上层) layout.addView(videoView2, 0, params2); layout.addView(videoView1, 1, params1); //videoView2.bringToFront(); 建议你从两个方面检查代码, 1、是否你的代码添加索引有问题 ,请你认真检查 2、你的测试设备的源码存在bug,请与framework工程师一起检查下
雕·不懒惰 2021-01-14
  • 打赏
  • 举报
回复
引用 3 楼 bdmh 的回复:
你addView中的索引不对
那应该是怎样的,如果索引不对的话,为什么只有VideoView不正常
bdmh 2021-01-14
  • 打赏
  • 举报
回复
你addView中的索引不对
雕·不懒惰 2021-01-13
  • 打赏
  • 举报
回复
引用 1 楼 不会写代码的猴子 的回复:
1.先回答你的问题:没有明确指定添加的控制位置和依赖关系。 2.提出问题:你可以在layout中先添加好控件,然后控制显示与隐藏
1:我这是RelativeLayout,后添加的不是应该覆盖先添加的吗,2个ImageView或者2个TextView都是正常的 2:需求是要动态添加,VideoView、ImageView、TextView,数量是不定的 有个List<View>,View的类型是那3种,list大小不定,只有在添加VideoView后接着添加VideoView才会出现问题, 添加VideoView后添加ImageView,再添加VideoView都是正常的
不会写代码的猴子 版主 2021-01-13
  • 打赏
  • 举报
回复
1.先回答你的问题:没有明确指定添加的控制位置和依赖关系。 2.提出问题:你可以在layout中先添加好控件,然后控制显示与隐藏

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧