5

我有一个想法,但我不确定如何实现它

首先我有一个对话框

final Dialog dialog = new Dialog(mContext);

我也有布局

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textViewTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:gravity="center_horizontal"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/textViewDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:gravity="center_horizontal"
        android:text="Small Text"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/textViewWhen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:gravity="center_horizontal"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>

我想要的是在对话框中添加此布局,我可能还想在该对话框内添加更多相同的布局我该怎么做?

例如,如何在一个对话框中添加两个这种布局?就像是


  Dialog Title

   Large Text
   Small Text
   Medium Text


   Large Text
   Small Text
   Medium Text
4

5 回答 5

8

像这样的东西:

LayoutInflater li = LayoutInflater.from(SomeActivity.this);
someLayout = (LinearLayout)li.inflate(R.layout.some_layout, null);

alert = new AlertDialog.Builder(SettingsActivity.this);
alert.setView(someLayout);
于 2012-08-27T13:53:07.317 回答
3

这是我的应用程序中的一个示例:

public class ConfirmDialog extends DialogFragment {

public static String TAG = "Confirm Dialog";

public interface ConfirmDialogCompliant {
    public void doOkConfirmClick();
    public void doCancelConfirmClick();
}

private ConfirmDialogCompliant caller;
private String message;

public ConfirmDialog(ConfirmDialogCompliant caller, String message){
    super();
    this.caller = caller;
    this.message = message;
}

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    final View view = inflater.inflate(R.layout.confirm_dialog, container, false);
    getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
    ((TextView) view.findViewById(R.id.textview_confirm)).setText(message);
    ((Button) view.findViewById(R.id.ok_confirm_button)).setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // When button is clicked, call up to owning activity.
            caller.doOkConfirmClick();
        }
    });
    ((Button) view.findViewById(R.id.cancel_confirm_button)).setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // When button is clicked, call up to owning activity.
            caller.doCancelConfirmClick();
        }
    });
    return view;
}

}

其中膨胀的布局是confirm_dialog.xml。
您在 onCreateView 方法中扩展您的布局。
在这种情况下,我使用了 DialogFragment(我建议您使用...查看支持库,这样您就不必担心您的目标 SDK),但同样适用于 Dialog。
希望对你有帮助!

于 2012-08-27T13:52:06.140 回答
2

您可以查看此文档页面,该页面解释了如何在对话框上添加自定义布局

http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog

关键是setContentView方法:

dialog.setContentView(R.layout.custom_dialog);
于 2012-08-27T13:50:20.660 回答
2

看看这个:

如何获得自定义的警报对话框,如图所示?

请参阅我给出的答案(Aamir Shah)

于 2012-10-04T08:42:50.130 回答
1

使用 a DialogFragment,它允许您像任何其他 一样Fragment,完全自定义布局。它在 v4 支持库中可用。

http://developer.android.com/reference/android/app/DialogFragment.html

http://developer.android.com/tools/extras/support-library.html

于 2012-08-27T13:50:46.033 回答