2012-11-04 24 views
5

Tôi có một MediaController và tôi muốn vị trí của nó trong màn hình phía trên bên phải, tôi sử dụng phương pháp SetAnchorView() sau bố trí của tôiChức MediaController với setAnchorView

<RelativeLayout 

    android:id="@+id/content_media" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
    <VideoView 

     android:id="@+id/audio_play" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_alignParentRight="true" 
      /> 
</RelativeLayout> 

và MyMediaController

VideoView video = (VideoView) findViewById(R.id.audio_play); 
MediaController mc = new MediaController(this); 
mc.setMediaPlayer(this); 
mc.setAnchorView(video); 

Nhưng MediaController của tôi đã hiển thị ở màn hình chính giữa. Hãy giúp tôi.Thanks!

Trả lời

6

Bạn có thể thử bằng cách thiết lập

mc.setPadding(0, 0, 0, 0); //0's are just placeholders here 

nhưng không 0 giá trị - thử thiết lập các giá trị trong dp với những gì bạn muốn trong các phương pháp trên. Nếu điều đó không hoạt động như dự định, hãy thử đặt anchorview trong onPreparedListener khi kích thước của video được biết.

video.setOnPreparedListener(new OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mp) { 
       mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() { 
               @Override 
               public void onVideoSizeChanged(MediaPlayer mp, int width, int height) { 
                 /* 
                 * add media controller 
                 */ 

                 mc.setAnchorView(video); 
                } 
               }); 
              } 
             }); 

EDIT UPDATE: Hóa ra tôi giải quyết một vấn đề tương tự tôi đã bằng cách mở rộng bộ điều khiển để thực hiện điều khiển của riêng tôi như thế này

import android.content.Context; 
import android.view.View; 
import android.widget.MediaController; 

public class CustomController extends MediaController { 
     public CustomController(Context context, View anchor)  { 
      super(context); 
      super.setAnchorView(anchor); 
     }  
     @Override 
     public void setAnchorView(View view)  { 
      // Do nothing 
     } 
    } 

Bây giờ chỉ cần làm điều này trong hoạt động của bạn - điều này làm việc cho Tôi

 CustomController mc = new CustomController(this, mVideoView); 
     mc.setMediaPlayer(video); 
     mc.setAnchorView(video); 
     video.setMediaController(mc); 
+0

Nhưng tôi muốn đặt lề của bộ điều khiển bằng màn hình và tôi không biết cách đặt, màn hình Videoview của tôi ở phía trên cùng bên phải màn hình nhưng bộ xử lý trung tâm của tôi không phân phối nằm bên dưới VideoView, nó hiển thị ở trung tâm: D – user1797447

+0

Đã chỉnh sửa - thử mã mới – Slartibartfast

+0

Tôi có thể có địa chỉ email của bạn không? Tôi sẽ cung cấp cho bạn ứng dụng của tôi, giúp tôi khắc phục sự cố, cảm ơn bạn: D – user1797447

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