Reputation: 73753
When I display a dialog on my ICS device in landscape mode the dialog shows in the same width as it did in portrait mode.
but on a device running gingerbread when the dialog is in landscape mode it displays the width across the screen not having everything compact
did they change how the dialog display's in ICS where it will not display across the screen like in the second picture? How can I get it back to show like the second picture so it does not look compact like the first one?
also the targeted api for this application is 2.2 so I cant use any ICS api's or anything
EDIT
this is how I call my dialogs
incDialog = new MessageDialog(this, R.style.FullHeightDialog);
incDialog.PopUpMessage(this, oMessage);
Dialogs are in a separate class that extends dialog
this is the PopUpMessage
method that actually shows the daialog
public void PopUpMessage(final Context context, clsMessageRecord oMessage) {
MainActivity.lastMessageClicked = oMessage;
moCallingContext = context;
moMessage = oMessage;
MainActivity.miShownDialogType = DialogID;
MainActivity.setShownMessage(moMessage);
MainActivity.mbIntentWasShown = true;
Log.i(className + "::PopUpMessage", "New Message Dialog Show....");
if (oMessage != null) {
if (oMessage.getIsStation() == true) {
// Incident Message Dialog
this.setContentView(R.layout.message_st);
clsStatusRecord oStation = ControlService.DB.StatusList.GetMessageByECM2ID(oMessage.ECM2ID);
if (oStation != null) {
if (oStation.AllowMapping()) {
ImageButton cmdMapping = (ImageButton) this.findViewById(R.id.cmdMapping);
cmdMapping.setVisibility(ImageButton.VISIBLE);
cmdMapping.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
MainActivity.loaded = false;
HandleMapping();
}
});
} else {
ImageButton cmdMapping = (ImageButton) this.findViewById(R.id.cmdMapping);
cmdMapping.setVisibility(ImageButton.GONE);
}
if (oStation.IsChief()) {
ImageButton cmdChief = (ImageButton) this.findViewById(R.id.cmdChiefList);
cmdChief.setVisibility(ImageButton.VISIBLE);
cmdChief.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
MainActivity.loaded = false;
handleResponders();
}
});
} else {
ImageButton cmdChief = (ImageButton) this.findViewById(R.id.cmdChiefList);
cmdChief.setVisibility(ImageButton.GONE);
}
}
mStationID = moMessage.ECM2ID;
mMessageID = moMessage.MessageID;
TextView txtHeader = (TextView) this.findViewById(R.id.txtDialogHeader);
TextView txtTOC = (TextView) this.findViewById(R.id.txtDialogTOC);
TextView txtMessage = (TextView) this.findViewById(R.id.lblMessage);
txtHeader.setText(oMessage.ECM2Name);
txtTOC.setText(oMessage.TOC);
txtMessage.setText(oMessage.MessageText);
if(oMessage.MessageText.toUpperCase().startsWith("UPDATE")) {
ImageButton cmdResp = (ImageButton) this.findViewById(R.id.cmdResponding);
cmdResp.setEnabled(false);
cmdResp.setImageResource(R.drawable.responding_disabled);
ImageButton cmdDecl = (ImageButton) this.findViewById(R.id.cmdDeclining);
cmdDecl.setEnabled(false);
cmdDecl.setImageResource(R.drawable.declining_disabled);
ImageButton cmdChief = (ImageButton) this.findViewById(R.id.cmdChiefList);
cmdChief.setEnabled(false);
cmdChief.setImageResource(R.drawable.chief_disabled);
}
ImageView imgIcon = (ImageView) this.findViewById(R.id.imgIcon);
switch (oMessage.State) {
case etMSNewMessage:
imgIcon.setBackgroundDrawable(context.getResources().getDrawable(imgSTNew));
break;
case etMSResponded:
imgIcon.setBackgroundDrawable(context.getResources().getDrawable(imgSTResponded));
break;
case etMSDeclined:
imgIcon.setBackgroundDrawable(context.getResources().getDrawable(imgSTUnavailable));
break;
}
Button cmdExit = (Button) this.findViewById(R.id.cmdExit);
cmdExit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
MainActivity.messageShown=false;
ClosePopup();
}
});
ImageButton cmdDeclining = (ImageButton) this.findViewById(R.id.cmdDeclining);
cmdDeclining.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
HandleDeclining(context);
}
});
ImageButton cmdResponding = (ImageButton) this.findViewById(R.id.cmdResponding);
cmdResponding.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
HandleResponding(context);
}
});
Log.e(className + "::PopUpMessage", "Message View Shown (Incident)");
this.show();
} else {
// Distribution List Dialog
this.setContentView(R.layout.message_dl);
Log.e(className + "::PopUpMessage", "Message Content Filling (Dist)");
TextView txtHeader = (TextView) this.findViewById(R.id.txtDialogHeader);
TextView txtTOC = (TextView) this.findViewById(R.id.txtDialogTOC);
TextView txtMessage = (TextView) this.findViewById(R.id.lblMessage);
txtHeader.setText(oMessage.ECM2Name);
txtTOC.setText(oMessage.TOC);
txtMessage.setText(oMessage.MessageText);
ImageView imgIcon = (ImageView) this.findViewById(R.id.imgIcon);
imgIcon.setBackgroundDrawable(context.getResources().getDrawable(imgDLRead));
Button cmdExit = (Button) this.findViewById(R.id.cmdExit);
cmdExit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
MainActivity.messageShown=false;
MainActivity.disMessageShown=false;
HandleCancel();
messageType = false;
}
});
ImageButton cmdReplyToSender = (ImageButton) this.findViewById(R.id.cmdReplyToSender);
cmdReplyToSender.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
HandleReplyToSender();
}
});
clsStatusRecord oRec = oMessage.GetStatusRecord();
if (oRec != null) {
ImageButton cmdReplyToDL = (ImageButton) this.findViewById(R.id.cmdReplyToDL);
if (oRec.AllowWrite()) {
// ImageButton cmdReplyToDL = (ImageButton) this.findViewById(R.id.cmdReplyToDL);
cmdReplyToDL.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
HandleReplyToDL();
}
});
}else{
cmdReplyToDL.setEnabled(false);
cmdReplyToDL.setImageResource(R.drawable.replytodistlist_up_disabled);
}
}
Log.e(className + "::PopUpMessage", "Message View Shown (Dist)");
messageType = true;
this.show();
}
} else {
}
}
here is the xml layout
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:orientation="vertical"
android:layout_height="match_parent"
android:padding="2dip" android:paddingTop="2dip" android:layout_width="fill_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="match_parent"
android:padding="0dip" android:layout_width="fill_parent">
<RelativeLayout
android:id="@+id/contentLayout2"
android:orientation="vertical"
android:padding="0dip"
android:layout_height="wrap_content"
android:layout_gravity="top|left"
android:background="#000000"
android:layout_weight="0" android:layout_width="fill_parent">
<ImageView
android:id="@+id/imgIcon"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="top|left" android:contentDescription="@string/desc">
</ImageView>
<TextView
android:layout_height="wrap_content"
android:text=""
android:id="@+id/txtDialogHeader"
android:layout_width="match_parent"
android:textStyle="bold"
android:layout_toRightOf="@id/imgIcon"
android:paddingLeft="5dip" android:textColor="#ff2525" android:textSize="18dip">
</TextView>
<TextView
android:layout_height="wrap_content"
android:text=""
android:id="@+id/txtDialogTOC"
android:layout_width="match_parent"
android:layout_toRightOf="@id/imgIcon"
android:layout_below="@id/txtDialogHeader"
android:paddingLeft="5dip" android:textSize="19dip" android:textStyle="bold">
</TextView>
</RelativeLayout>
<ScrollView
android:id="@+id/scrollMessageFrame"
android:layout_height="match_parent"
android:padding="0dip"
android:background="#AA0000"
android:layout_weight="1" android:layout_width="fill_parent">
<TextView
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text=""
android:id="@+id/lblMessage"
android:padding="5dip"
android:background="#000000"
android:minHeight="140dip" android:textColor="#f2f2f2" android:textSize="20dip">
</TextView>
</ScrollView>
<RelativeLayout
android:id="@+id/contentLayout3"
android:orientation="vertical"
android:background="#000000"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal" android:gravity="center_horizontal" android:layout_width="match_parent">
<ImageButton
android:id="@+id/cmdResponding"
android:layout_width="62dip"
android:layout_height="62dip"
android:layout_marginRight="10dip"
android:contentDescription="@string/desc"
android:src="@drawable/responding_ref" android:background="@drawable/responding_up" android:layout_marginTop="5dip" android:layout_marginLeft="5dip">
</ImageButton>
<ImageButton android:id="@+id/cmdDeclining" android:src="@drawable/declining_ref" android:background="@drawable/declining_up" android:layout_alignTop="@+id/cmdResponding" android:layout_alignBottom="@+id/cmdResponding" android:layout_height="62dip" android:layout_width="62dip" android:layout_marginLeft="3dip" android:layout_toRightOf="@+id/cmdResponding" android:layout_marginRight="10dip" android:contentDescription="@string/desc"></ImageButton>
<ImageButton
android:id="@+id/cmdChiefList"
android:layout_width="62dip"
android:layout_height="62dip"
android:layout_toRightOf="@+id/cmdDeclining" android:background="@drawable/chief_up" android:layout_marginRight="10dip" android:src="@drawable/chief_ref" android:contentDescription="@string/desc" android:layout_marginTop="5dip" android:layout_marginLeft="6dip"/>
<ImageButton android:id="@+id/cmdMapping" android:background="@drawable/globe_up" android:src="@drawable/mapping_ref" android:layout_height="60dip" android:layout_width="60dip" android:layout_marginLeft="2dip" android:layout_toRightOf="@+id/cmdChiefList" android:layout_marginTop="5dip" android:contentDescription="@string/desc"></ImageButton>
</RelativeLayout>
</LinearLayout>
<Button
android:text=""
android:textSize="16dip"
android:layout_height="40dip"
android:layout_width="40dip"
android:id="@+id/cmdExit"
android:background="@drawable/closepopup"
android:layout_gravity="top|right" android:contentDescription="@string/desc">
</Button>
</FrameLayout>
Upvotes: 3
Views: 1588
Reputation: 10365
If you're going to have custom Dialogs, it is better to have them in a XML file.
In my custom dialogs, I'm using a RelativeLayout with android:layout_width="wrap_content" and they adapt to the screen orientation and its contents just right.
The dialog_layout.xml should look something like this:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/dialog_background"
android:padding="@dimen/dialog_padding" >
<TextView
android:id="@+id/text_view"
style="@style/WhiteTextLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text="@string/dialog_text" />
<LinearLayout
android:id="@+id/buttons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/text_view"
android:orientation="horizontal" >
<Button
android:id="@+id/button_cancel"
style="@style/RedCancelButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/button_cancel" />
<Button
android:id="@+id/button_done"
style="@style/GreenDoneButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/button_done" />
</LinearLayout>
</RelativeLayout>
To inflate it from Java code:
final Dialog aDialog = new Dialog(this);
aDialog.requestWindowFeature(Window.FEATURE_LEFT_ICON);
aDialog.setTitle(getString(R.string.dialog_title));
aDialog.setContentView(R.layout.dialog_layout);
aDialog.setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.ic_dialog_icon);
aDialog.setCancelable(true);
final Button buttonDone = (Button) aDialog.findViewById(R.id.button_done);
final Button buttonCancel = (Button) aDialog.findViewById(R.id.button_cancel);
buttonDone.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Do something...
aDialog.cancel();
}
});
buttonCancel.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Do nothing
aDialog.cancel();
}
});
aDialog.show();
My minSdkVersion is 8 and targetSdkVersion is 15. I'm not applying any theme to the dialog, but I'm customizing background (a shape drawable), buttons (with styles) etc. The dialog looks and behaves the same in devices from Froyo to ICS in any orientation.
I just have 1 xml in my /layout/ folder... but you might want to create another xml with the same name with some tweaks according to the orientation in your /layout-land/ folder.
The new APIs have Dialog Fragments though Refer Using Dialog Fragments, you might want to take a look at them too.
I hope this helps. Good luck!
Upvotes: 1
Reputation: 40380
Yes, API 11 is targeted to tablets and large screens, and AlertDialog is designed not to cover entire screen in Holo theme. Its default size depends on screen size (is expressed as percentual width of screen width).
It's not clear what is base class of your MessageDialog. Assuming it inherits AlertDialog, then a theme sets size of dialog.
Assuming you have android:targetSdkVersion>=11 in the manifest, app uses Theme.Holo.Dialog.Alert theme for the dialog, which sets android:windowMinWidthMajor and android:windowMinWidthMinor to specify width of dialog.
You can fix this either by setting android:targetSdkVersion=10, or by making and using own theme for dialog where parent theme would be Theme.Holo.Dialog.Alert and you'd overwrite mentioned width items.
Upvotes: 6