2012-11-04 68 views
5

我有一個的MediaController,我想這是在右上角的屏幕位置,我使用方法SetAnchorView()如下 我的佈局位置的MediaController與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> 

和的myMediaController

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

但我的MediaController已顯示在頂部中央屏幕上。請幫助我。謝謝!

回答

6

您可以通過設置

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

儘量不要 0值 - 嘗試在DP的值設置爲你想在上面的方法什麼。如果這不符合預期,那麼一旦視頻的大小已知,可以嘗試在onPreparedListener中設置anchorview。

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

編輯更新:原來我解決了類似的問題,我不得不通過擴展控制器,使我自己的控制器這樣

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

現在只要做到這一點在你的活動 - 這適用於我

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

但我想設置控制器的邊緣與屏幕,我不知道如何設置它,我的Videoview顯示在右上方的屏幕,但我的mediacontroller不顯示打印在VideoView下方,顯示在中心:D – user1797447

+0

已編輯 - 嘗試新代碼 – Slartibartfast

+0

我可以有你的電子郵件地址嗎?,我會給你我的應用程序,幫我修復它,謝謝你:D – user1797447