0

下の画像は基本的に私が達成したいものです。これは私のdialog_layout.xmlとしてEclipseから直接出てきます

カスタム ダイアログを拡張し、画面の右側に表示してメニューとして使用したいと考えています。毎回、これを表示しようとしDialogFragmentますが、以下のレイアウトは画面の中央に配置されています。( onCreateDialog()`DialogFragment1 のコードは画像の下にあります。

これを達成する方法はありますか?ダイアログ テーマを使用してアクティビティを作成する必要がありますか?

希望するダイアログ

@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
    // Create a new Dialog using the AlertDialog Builder
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

    View background = getActivity().getLayoutInflater().inflate(R.layout.dialog_layout, null);

    builder.setView(background);        

    return builder.create();
}

どんな助けでも大歓迎です!

乾杯

4

1 に答える 1

2

成功!

DialogFragment を使用して、画面の右上にカスタム メニュー ダイアログを作成しました。

ここに画像の説明を入力

理由:

  • 大きなボタンが必要だったので、標準メニューは小さすぎました。
  • 標準メニューは、カスタム メニュー ボタンから膨らませるのが面倒です。
  • ユーザーがメニュー ボタンを押すときの親指と同じ、右上のかなりスリムなダイアログが必要でした。これは、ほとんどのメニューと同じロジックです。

直面した問題:

  • ダイアログの周囲に不要な黒い境界線が表示されます || 解決策: dialog.setView(dialogLayout, 0, 0, 0, 0);
  • || ダイアログは常に中央に配置されていました || 解決策: WindowParams を変更しました。
  • || 最初に XML デザインが表示されますが、ダイアログが画面の大部分を占めていました || 解決策:カスタムの透明な windowBackground テーマを適用する

コード:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
    // Create a new Dialog and apply a transparent window background style
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.dialog_theme);                 
    AlertDialog dialog = builder.create();

    // Create the custom dialog layout and set view with initial spacing parameters to prevent black background
    View dialogLayout = getActivity().getLayoutInflater().inflate(R.layout.dialog_fragment_menu, null);
    dialog.setView(dialogLayout, 0, 0, 0, 0);

    // Change the standard gravity of the dialog to Top | Right.
    WindowManager.LayoutParams wlmp = dialog.getWindow().getAttributes();       
    wlmp.gravity = Gravity.TOP | Gravity.RIGHT;

    return dialog;
}

私のスタイルのコードは単純です:

<style name="dialog_theme" parent="@android:style/Theme.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
</style> 
于 2013-05-01T09:46:14.047 に答える