2011-12-08 90 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