2013-01-25 28 views
4

我剛創建了一個帶有VideoView的自定義DialogFragment,裏面有一些問題。VideoView裏面的DialogFragment

  • 視頻正在播放,但由於某種奇怪的原因,視頻頂部有一種黑色且非常透明的圖層。當然,我試圖在我的應用程序中的其他地方播放同一個視頻,這不是對話窗口,而是顯示正確。非常奇怪...

  • 此外,對話窗口的頂部和左邊界消失 - 如果刪除VideoView,他們不會。

任何想法?提前致謝!

編輯

控制器

public class VideoPlayerFragment extends DialogFragment 
{ 
    String json_string; 

    // Constructor 
    public static VideoPlayerFragment newInstance(String json_string_arg) 
    { 
     VideoPlayerFragment fragment = new VideoPlayerFragment(); 

     Bundle arguments = new Bundle(); 
     arguments.putString("json_string", json_string_arg); 
     fragment.setArguments(arguments); 

     return fragment; 
    } 


    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     // Set style 
     setStyle(DialogFragment.STYLE_NO_TITLE, 0); 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     View view = inflater.inflate(R.layout.video_player, container, false); 

     return view; 
    } 


    @Override 
    public void onActivityCreated(Bundle savedInstanceState) 
    { 
     super.onActivityCreated(savedInstanceState); 

     // Set video holder 
     VideoView video_view = (VideoView) getView().findViewById(R.id.video_view); 

     // Set URL 
     Uri video = Uri.parse("android.resource://" + getActivity().getPackageName() + "/" + R.raw.test); 
     video_view.setVideoURI(video); 

     // Start video 
     video_view.start(); 
    } 
} 

查看

<LinearLayout android:id="@+id/video" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="@dimen/video_player_margin" 
     android:orientation="vertical" > 

     <VideoView android:id="@+id/video_view" 
      android:layout_gravity="center_horizontal|center_vertical" 
      android:layout_width="700dp" 
      android:layout_height="400dp" /> 

    </LinearLayout> 
+1

把你的對話框片段代碼,讓我們看看什麼是可能的 –

+0

你有它! – thomaus

+0

沒有人不知道? – thomaus

回答

0
 public class VideoPlayerFragment extends DialogFragment 
     { 
      String json_string; 

      // Constructor 
      public static VideoPlayerFragment newInstance(String json_string_arg) 
      { 
       VideoPlayerFragment fragment = new VideoPlayerFragment(); 

       Bundle arguments = new Bundle(); 
       arguments.putString("json_string", json_string_arg); 
       fragment.setArguments(arguments); 

       return fragment; 
      } 

     @Override 
      public Dialog onCreateDialog(Bundle savedInstanceState) { 
       Dialog dialog = new Dialog(getActivity()); 
       dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
       dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
       dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
       dialog.getWindow().setSoftInputMode(
         WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN|WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 
       dialog.setCancelable(true); 
       View parent= getActivity().getLayoutInflater().inflate(R.layout.video_player, null); 
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
dialog.setContentView(parent, layoutParams); 
       return dialog; 
      } 
     @Override 
      public void onActivityCreated(Bundle savedInstanceState) 
      { 
       super.onActivityCreated(savedInstanceState); 

       // Set video holder 
       VideoView video_view = (VideoView) getView().findViewById(R.id.video_view); 

       // Set URL 
       Uri video = Uri.parse("android.resource://" + getActivity().getPackageName() + "/" + R.raw.test); 
       video_view.setVideoURI(video); 

       // Start video 
       video_view.start(); 
      } 

朋友可以嘗試創建視圖嘗試沒有對話框的標題創建onCreateDialog的上面的代碼。相反.. ..

+0

感謝您的幫助,但並未解決我的問題。 – thomaus

0

我遇到了同樣的情況:DialogFragment中的videoview。

問題1:here可能對你有幫助,我剛剛也發現了它;

問題2:我覺得你需要在方法這些代碼onActivityCreated()(這條線隱藏在黑色的邊框)

getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 

PS:這是onCreateView(,,)

if (getShowsDialog()) 
    { 
     getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); 

     getDialog().setCanceledOnTouchOutside(false); 
    } 
我的初始化代碼
相關問題