在scrollview问题中的Videoview

时间:2013-11-29 10:08:51

标签: android android-videoview android-scrollview

我已经google了很多东西来解决这个问题,但它在任何情况下都不起作用。尝试了Android::VideoView inside a ScrollViewAndroid 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提前!

5 个答案:

答案 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>