2011-12-08 49 views
5

Tôi muốn thêm một VideoView vào LinearLayout theo chương trình. LinearLayout có id là "main".Thêm VideoView vào bố cục XML

Tham chiếu câu hỏi SO Video Streaming and Android này, tôi có thể hiển thị và phát video, nhưng điều gì sẽ xảy ra nếu tôi muốn tạo VideoView mới và thêm nó vào bố cục?

Đây là XML Tôi cố gắng để "sao chép" cách lập trình:

<?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> 

Sau đây là cách tôi đã cố gắng để thực hiện điều tương tự cách lập trình:

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

Vấn đề là video doesn 't hiển thị ở tất cả! Với VideoView được khai báo trong XML, mọi thứ đều hoạt động tốt, nhưng theo lập trình, nó không hoạt động chút nào.

Để rõ ràng, tôi không muốn có một VideoView được xác định trong tệp XML khi tôi thực hiện nó theo lập trình.

+0

Khi bạn gọi 'addView() 'và không có gì xảy ra, không logcat nói gì? –

+0

Không, logcat không nói bất cứ điều gì – user5243421

Trả lời

4

Tôi không hoàn toàn chắc chắn lý do mã của bạn không hoạt động, nhưng tôi có thể cung cấp ví dụ từ một trong các dự án của tôi, nơi tôi tăng cường một VideoView và thêm nó vào FrameLayout được đặt bên trong LinearLayout. Tôi kiểm soát video của tôi mặc dù một MediaController.

Đây là XML cho FrameLayout tôi:

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

Trong res/layout Tôi có một tập tin XML chỉ chứa một 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" /> 

Để thêm nó lập trình chúng ta cần một inflater và khung:

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

Khi tôi muốn hiển thị video và phát, tôi sử dụng đồng sau đây de:

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

Tôi hy vọng điều này có thể giúp đỡ một số bạn cho đến khi ai đó có thể trả lời câu hỏi của bạn :-)

+0

Xin lỗi vì sự mơ hồ, nhưng tôi có nghĩa là tôi sẽ không có một VideoView được xác định trong tệp bố trí XML. Tôi đang tìm kiếm để thêm một VideoView hoàn toàn mới lập trình ngay từ đầu, không cần lạm phát. Lưu ý dòng mà tôi khai báo một VideoView mới bằng cách sử dụng từ khóa "này" thay vì một cái gì đó từ tập tin tạo ra R.java. Cảm ơn phản ứng của bạn, mặc dù! – user5243421

Các vấn đề liên quan