我已经google了很多东西来解决这个问题,但它在任何情况下都不起作用。尝试了Android::VideoView inside a ScrollView和Android Scrollview having videoview is giving problem中提到的所有内容。
问题是,当我将视频视图放在scrollview中时,它不起作用,但是当删除scrollview时它工作得非常好。
以下是示例代码:
// xml file
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/btn_video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="start" />
<ScrollView
android:id="@+id/scrl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_video" >
<VideoView
android:id="@+id/videoView_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</ScrollView>
</RelativeLayout>
Java代码MainActivity
类
package com.practice.videoviewexample;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Button;
import android.widget.VideoView;
public class MainActivity extends Activity {
private VideoView videoView_exhibit;
private Button btnVideo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videoView_exhibit = (VideoView) findViewById(R.id.videoView_1);
btnVideo = (Button) findViewById(R.id.btn_video);
Uri video = Uri.parse("android.resource://" + getPackageName() + "/"+ R.raw.abc);
videoView_exhibit.setVideoURI(video);
videoView_exhibit.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
有人可以帮忙吗? Thanx提前!
答案 0 :(得分:4)
这是VideoView的已知限制。 检查一下:VideoView inside ScrollView
希望这有帮助。
答案 1 :(得分:1)
通过更改VideoView属性android:layout_width和android:layout_height到固定的dp大小(100dp)VideoView显示出来。
答案 2 :(得分:0)
尝试添加:
android:background="#0000"
到videoView
答案 3 :(得分:0)
我没有设法让VideoView在ScrollView中运行,而是在某些情况下,可以通过设置VideoView&#39来根据可用的垂直空间缩放VideoView。 ; s size属性为:
<VideoView
android:id="@+id/myVideoView"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
这将缩放VideoView并保持视频的宽高比。
答案 4 :(得分:0)
我之前遇到了和你一样的问题。转向这是使用NestedScrollView而不是常规的旧ScrollView。
NestedScrollView和ScrollView的工作方式相同。
<android.support.v4.widget.NestedScrollView
android:id="@+id/scroll_home"
android:scrollbars="none"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<VideoView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/video_view"/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>