Thank you for both of your answers.

In the android source, it has:

 * If you
 * want to display a more complex view, look up the FrameLayout called "body"
 * and add your view to it:
 *
 * <pre>
 * FrameLayout fl = (FrameLayout) findViewById(R.id.body);
 * fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT));
 * </pre>

How can I hook up to that?
Do I need to create a layout xml file with 'body' as it name?
And how can I make an AlertDialog loads that layout xml?

Thank you.



On Sun, Mar 22, 2009 at 12:48 PM, sm1 <sergemas...@gmail.com> wrote:
>
> usually your layout is defined in an xml file (in res/layout) and in
> your Java-like Android code you can reference it so:
>
>        d.setContentView(R.layout.dialog_view);
>
> where d is an instance of AlertDialog.
>
> and dialog_view.xml could contain:
>
> <?xml version="1.0" encoding="utf-8"?>
> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/
> android"
>    android:layout_width="fill_parent"
>    android:layout_height="fill_parent"
>    >
>    <!-- android:title="any title" does not work
>    -->
>
>    <TextView
>        android:id="@+id/label"
>        android:layout_width="fill_parent"
>        android:layout_height="wrap_content"
>        android:text="The search is case sensitive:"/>
>
>    <EditText
>        android:id="@+id/entry"
>        android:layout_width="fill_parent"
>        android:layout_height="wrap_content"
>        android:background="@android:drawable/editbox_background"
>        android:layout_below="@id/label"/>
>
>    <Button
>        android:id="@+id/find"
>        android:layout_width="wrap_content"
>        android:layout_height="wrap_content"
>        android:layout_below="@id/entry"
>        android:layout_alignParentLeft="true"
>        android:layout_marginRight="10dip"
>        android:text="Find Next" />
>
>    <Button
>        android:id="@+id/cancel_search"
>        android:layout_width="wrap_content"
>        android:layout_height="wrap_content"
>        android:layout_toRightOf="@id/find"
>        android:layout_alignTop="@id/find"
>        android:text="Cancel" />
>
> </RelativeLayout>
>
> The above answers your direct question but there are a few different
> ways to use such a layout.
>
> I know 5 techniques for setting up an AlertDialog (details are below):
>
> 1. Dialog parent class: if you need to roll a simple version.
>
> 2. AlertDialog plain (without the builder): not recommended but works.
>
> 3. AlertDialog.Builder: classic; probably better than the above 2.
>
> 4. Using the two Activity methods that are called by Android: great
> for persisting AlertDialog instances = better performance.
>
> 5. Using an Activity that looks like a Dialog: for fancy stuff.
>
>
> Details:
>
> 1. Dialog parent class: a mix of code and xml layout
>
>        Dialog d = new Dialog(this); //*this* is the Activity
>        Window w = d.getWindow((;
>        w.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
>                   WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
>        d.setTitle("Dialog (not alert)");
>        //your layout defined in an xml file (in res/layout)
>        d.setContentView(R.layout.dialog_view);
>        d.show();
>
>
>
> 2. AlertDialog plain (not recommended but works)
>
> I sometimes use this technique in an uncaughtException method.
>
>   AlertDialog error = new AlertDialog(this){
>      //*this* is the Activity because it needs the Context.
>      protected void onCreate(Bundle savedInstanceState){
>        super.onCreate(savedInstanceState);
>      }
>    };
>    error.setTitle("Anomaly Detected");
>    error.setMessage("A possible defect has been detected in "
>      +getString(R.string.app_name)
>      +" v. "+getString(R.string.versionString)
>      +"\nFor support, please write m...@myplace.com");
>    error.show();
>
> There are more complex versions of this technique but the other
> techniques below are better.
>
>
>
> 3. The AlertDialog.Builder technique: recommended, as are # 4 and 5
> below.
>
>        AlertDialog.Builder bookmarkDialog = new AlertDialog.Builder(this);
>          //*this* is the Activity because it needs the Context.
>        bookmarkDialog.setIcon(android.R.drawable.ic_menu_myplaces);
>        bookmarkDialog.setTitle("Bookmark "+getString(R.string.app_name));
>        AlertDialog ad = bookmarkDialog.create();
>        ad.requestWindowFeature(Window.FEATURE_LEFT_ICON);
>        //more setup here...
>        //setup completed:
>        bookmarkDialog.show();
>
>
>
> 4. Using Activity methods called by Android: good for persisting
> AlertDialog instances
>
> 4.1. you override these 2 methods:
>
>  onCreateDialog(int yourId)
>    //called by Android the first time that you call showDialog.
>    //You may use the AlertDialog.Builder technique in this method.
>
>  onPrepareDialog(int yourId, Dialog dialog)
>    //called by Android each time the dialog is shown.
>    //You don't create any dialog instance here; use the one given.
>    //You can do things like
>    dialog.setMessage("new message with new info");
>
>
> 4.2. and you do this somewhere in your code:
>
>        showDialog(yourUniqueDialogId);
>
>
> 4.3. yourUniqueDialogId must be defined by you, usually as a static
> field; must be an int.
>
>
>
> 5. Using an Activity that looks like a Dialog:
>
>        <activity android:name=".ActivityDialog1"
>                  android:theme="@android:style/Theme.Dialog">
>        </activity>
>
> And you manage the Activity like any another Activity.
>
>
> sm1
>
>
> On Mar 22, 2:56 am, Lucius Fox <lucius.fo...@gmail.com> wrote:
>> Hi,
>>
>> How is android's AlertDialog layout define? Is there a layout.xml file
>> corresponding to the AlertDialog?
>> I have looked at AlertDialog implementation, But i don't figure out
>> how that is being layout (e.g. the location of the button, the
>> location of text) Where are they defined? And how can I change that?
>>
>> Thank you.
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to