4

内部に 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>
4

2 に答える 2

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を作成してみてください...。

于 2013-01-30T04:33:11.787 に答える