0

テーマAlertDialogを使用するときにシステム スタイルのデフォルトを使用しないカスタムを作成しようとしています。Theme.Holo.Light.Dialogそのテーマを使いたいのですが、ListActivity同じテーマを使っているのと同じスタイルにしたいです。クラスが異なれば、同じテーマでもスタイルが異なるため、 のサブクラスを作成する必要があるようDialogFragmentです。もう 1 つの制限は、このダイアログを一般的なものにしたいということです。つまり、条件付きでボタン、メッセージ、タイトル、アイコン、アイテムを追加できるようにしたいのです。したがって、xmlファイルからaを膨張させることはできないようDialogFragmentです(または、必要なすべての可能な要素を作成してから、不要な要素を非表示にすることができれば、できるかもしれません。それは可能ですか?DialogFragment単一のxmlファイルから膨らませずにプログラムでビルドしますか?

編集

これが役立つようです:プログラムでカスタム ダイアログにコントロールを追加する

私はこの答えを使用して何かに取り組んでいます:テーブルにテーブル行を動的に追加し、Android のダイアログ ボックスに表示します

このコードを使用してもボタンが表示されないのはなぜですか?

レイアウトに追加した xml 要素が表示されます。

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Dialog dialog = super.onCreateDialog(savedInstanceState);
    return dialog;
}

@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    View contentView = inflater.inflate(R.layout.post_dialog, container);
    RelativeLayout layout = (RelativeLayout) contentView.findViewById(R.id.post_dialog_layout);

    Button testButton = new Button(getActivity());
    testButton.setText("success");
    testButton.setLayoutParams(new RelativeLayout.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT));
    layout.addView(testButton);
    return contentView;
}
4

2 に答える 2

-3

引数 Bundle を作成した DialogFragment に設定し、それらを使用してダイアログを構成できます。それらのいくつかはオプションである場合があり、それを使用して、どのオプション ダイアログに含める必要があるか (タイトル、追加ボタン、アイコン) を検出できます。

import android.app.AlertDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;

import ru.daoffice.R;

public class AlertDialogFragment extends DialogFragment {

    private static final String ARG_TITLE = "ArgTitle";

    private static final String ARG_MESSAGE = "ArgMessage";

    public static DialogFragment newInstance(String title, String message) {
        Bundle argumnets = new Bundle();
        argumnets.putString(ARG_TITLE, title);
        argumnets.putString(ARG_MESSAGE, message);

        DialogFragment dialogFragment = new AlertDialogFragment();
        dialogFragment.setArguments(argumnets);
        return dialogFragment;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new AlertDialog.Builder(getActivity())
            .setIcon(R.drawable.alert_dialog_icon)
            .setTitle(getArguments().getString(ARG_TITLE))
            .setMessage(getArguments().getString(ARG_MESSAGE))
            .setPositiveButton(android.R.string.ok, null)
            .create();
    }
}
于 2013-05-31T17:45:52.107 に答える