当我在横向模式下在ICS设备上显示对话框时,对话框显示的宽度与在纵向模式下的宽度相同。
但是当对话框处于横向模式时,在运行姜饼的设备上,它会在屏幕上显示宽度并没有紧凑的一切
他们是否改变了ICS中对话框的显示方式,它不会像第二张图片那样在屏幕上显示?我怎样才能让它像第二张图片一样显示出来,所以它看起来不像第一张图片那么紧凑?
这个应用程序的目标api也是2.2所以我不能使用任何ICS api或任何东西
修改
这就是我调用对话框的方式
incDialog = new MessageDialog(this, R.style.FullHeightDialog);
incDialog.PopUpMessage(this, oMessage);
对话框位于一个扩展对话框的单独类中
这是实际显示daialog
的PopUpMessage
方法
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 {
}
}
这是xml布局
<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>
答案 0 :(得分:6)
是的,API 11针对的是平板电脑和大屏幕,而AlertDialog的设计并不涵盖Holo主题的整个屏幕。其默认大小取决于屏幕大小(表示为屏幕宽度的百分比宽度)。
目前尚不清楚MessageDialog的基类是什么。 假设它继承了AlertDialog,那么主题设置对话框的大小。
假设你在清单中有android:targetSdkVersion&gt; = 11,app会使用Theme.Holo.Dialog.Alert主题进行对话,设置android:windowMinWidthMajor和android:windowMinWidthMinor来指定对话框的宽度。
您可以通过设置android:targetSdkVersion = 10来修复此问题,或者通过制作和使用自己的主题进行对话,其中父主题将是Theme.Holo.Dialog.Alert,并且您将覆盖提到的宽度项目。
答案 1 :(得分:1)
如果您要使用自定义对话框,最好将它们放在XML文件中。
在我的自定义对话框中,我使用了一个带有android:layout_width =“wrap_content”的RelativeLayout,它们适应屏幕方向及其内容恰到好处。
dialog_layout.xml应如下所示:
<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>
从Java代码中膨胀它:
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();
我的minSdkVersion是8,targetSdkVersion是15.我没有在对话框中应用任何主题,但我正在自定义背景(形状可绘制),按钮(带样式)等。对话框的外观和行为相同从Froyo到ICS的任何设备。
我的/ layout /文件夹中只有1个xml ...但您可能想根据/ layout-land /文件夹中的方向创建另一个具有相同名称的xml并进行一些调整。
虽然引用Using Dialog Fragments,新的API有Dialog Fragments,你可能也想看看它们。
我希望这会有所帮助。祝你好运!