2011-12-08 58 views
5

我想以编程方式将一个VideoView添加到LinearLayout。 LinearLayout的ID为“main”。将VideoView添加到XML布局

引用这个SO问题Video Streaming and Android,我能够让视频显示和播放,但是如果我想立即创建新的VideoView并将其添加到布局,该怎么办?

这是我想的XML“复制”编程:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout android:id="@+id/main" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent"> 
<VideoView android:id="@+id/your_video_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
/> 
</LinearLayout> 

这里是我试图完成编程同样的事情:

VideoView videoView = new VideoView(this); 
LinearLayout layout = (LinearLayout)findViewById(R.id.main); 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
layout.addView(videoView, params); 

的问题是,视频没有按一点都不显示!用XML在XML中声明,一切正常,但在编程上,它根本不起作用。

要清楚的是,我不想在编程的时候在XML文件中定义VideoView。

+0

问题当你调用'addView()'没有任何反应,确实logcat的说什么? –

+0

不,logcat不会说任何东西 – user5243421

回答

4

我不太清楚为什么你的代码不工作,但我可以从我的一个项目中提供一个例子,在这里我膨胀一个VideoView并将其添加到放置在LinearLayout中的FrameLayout中。我通过MediaController控制我的视频。

这里是我的FrameLayout的XML:

<FrameLayout 
    android:id="@+id/videoFrameLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 
</FrameLayout> 

在res /布局我有一个XML文件只包含一个VideoView:

<?xml version="1.0" encoding="utf-8"?> 
<VideoView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/your_video_view" 
android:layout_height="fill_parent" 
android:layout_width="fill_parent" /> 

添加它编程,我们需要吹气和框架:

inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
videoFrame = (FrameLayout)findViewById(R.id.videoFrameLayout); 

当我想要显示视频并播放它时,我使用以下公司德:

videoView = (VideoView) inflater.inflate(R.layout.your_video_view, null); 
MediaController mediaController = new MediaController(this); 
mediaController.setAnchorView(videoView); 
videoView.setMediaController(mediaController); 
videoView.setVideoPath(FilePathHere); 
videoFrame.addView(videoView); 
videoView.start(); 

我希望这能成为对你有所帮助,直到有人能够回答你的:-)

+0

对不起,我的意思是我没有在XML布局文件中定义的VideoView。我期待从一开始就完全以编程方式添加新的VideoView,不需要充气。请注意,我使用“this”关键字声明了一个新的VideoView,而不是R.java生成的文件中的内容。不过谢谢你的回应! – user5243421