2011-12-08 11 views
5

プログラムでLinearLayoutにVideoViewを追加したいと思います。 LinearLayoutのidは "main"です。VideoViewをXMLレイアウトに追加する

この質問は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); 

問題はビデオdoesnのことです全く表示されない! VideoViewをXMLで宣言すると、すべて正常に動作しますが、プログラム的にはうまくいきません。

明らかに、私はプログラムでそれをやっているときに、XMLファイルでVideoViewを定義したくありません。

+0

:-)あなたの質問に答えることができるようになるまで、これは)あなたにいくつかの助けになることを願って'と何も起こりませんが、何も言わlogcatていますか? –

+0

いいえ、logcatは何も言わない – user5243421

答えて

4

あなたのコードがうまくいかない理由はわかりませんが、自分のプロジェクトの1つで、VideoViewを膨らませて、LinearLayoutの中に置かれたFrameLayoutに追加するという例を提供できます。 MediaControllerを通して私のビデオをコントロールします。ここで

は私でframeLayoutためのXMLです:

解像度/レイアウトで
<FrameLayout 
    android:id="@+id/videoFrameLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 
</FrameLayout> 

私はちょうどVideoViewを含むXMLファイルを持っている:

<?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(); 

私は、誰かがあなたが `addView(呼び出すとき

+0

あいまいなことには申し訳ありませんが、私はXMLレイアウトファイルでVideoViewを定義していないことを意味しました。私は最初から完全にプログラムで新しいVideoViewを追加することを望んでいます。 R.java生成ファイルからのものではなく、 "this"キーワードを使用して新しいVideoViewを宣言する行に注意してください。あなたの応答をありがとう! – user5243421

関連する問題