问题
I am working on the application where i wanted to display the dialog to be screen size. So i used code below.I got the solution through here Alert message is not displaying in alert dialog box?
AlertDialog.Builder builder = new AlertDialog.Builder(this);
TextView title = new TextView(this);
title.setText("DM2");
title.setBackgroundColor(Color.DKGRAY);
title.setPadding(10, 10, 10, 10);
title.setGravity(Gravity.CENTER);
title.setTextColor(Color.WHITE);
title.setTextSize(20);
TextView text = new TextView(this);
text.setText("Hello This text");
text.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
text.setTextSize(20);
text.setGravity(Gravity.CENTER);
//Creates a linearlayout layout and sets it with initial params
LinearLayout ll = new LinearLayout(this);
ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
ll.setGravity(Gravity.CENTER);
ll.addView(text);
builder.setCustomTitle(title);
builder.setPositiveButton(
"Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
Dialog d = builder.setView(ll).create();
//Fills up the entire Screen
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(d.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.FILL_PARENT;
lp.height = WindowManager.LayoutParams.FILL_PARENT;
d.show();
d.getWindow().setAttributes(lp);
But I want dialog to be appeared in center aligned. Now it is display in top of the window. I tried with lp.garvity = Gravity.center, but didn't work. and If the device orientation changes, i need to press ok button more time to close the dialog. How to fix this?
Thanks in advance Pushpa
回答1:
I'm little late, but better late then never :-) you can use the code below: (I saw also here)
dialog = new Dialog(activity, android.R.style.Theme_Translucent_NoTitleBar);
dialog.setContentView(R.layout.activity_upload_photo_dialog);
Window window = dialog.getWindow();
window.setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
window.setGravity(Gravity.CENTER);
//The below code is EXTRA - to dim the parent view by 70%
LayoutParams lp = window.getAttributes();
lp.dimAmount = 0.7f;
lp.flags = LayoutParams.FLAG_DIM_BEHIND;
dialog.getWindow().setAttributes(lp);
//Show the dialog
dialog.show();
Hope I helped...
回答2:
This works for me:
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
回答3:
Maybe this works:
WindowManager.LayoutParams WMLP = dialog.getWindow().getAttributes();
WMLP.gravity = Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL
dialog.getWindow().setAttributes(WMLP);
回答4:
Try to use android:layout_gravity="center" instead of android:gravity="center"... It may be helpful for you..
android:layout_gravity="center"
or
you can try this..
<activity android:theme="@android:style/Theme.Dialog"
android:name=".Splash">
</activity>
Write full xml code and make simple Activty and add one attribute in AndroidManifest.xml, when you registering your Activity into AndroidManifest.xml
回答5:
Note :- This is for "custom layout"... :)
I was struggling with the same, and after struggling for hours i came to this result
Earlier i was creating the dilaoge like this : -
final Dialog dialog = new Dialog(PopupforeditActivity.this);
After adding style "No titleBar" it started fetching the layout the way I had created.
For this you have to create the layout with params "fillParent" and create the dialoge like this
final Dialog dialog = new Dialog(PopupforeditActivity.this,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
dialog.setContentView(R.layout.dialog_billing_cart);
dialog.setCancelable(true);
The above is coding part
You in Layout
part
put your whole layout in RelativeLayout
and give your layout property android:layout_centerInParent="true"
Ex:-
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent" >
<!--Your Layout-->
<ScrollView
android:id="@+id/scrlView_FormHolder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp" >
</ScrollView>
</RelativeLayout>
And if you don't want to miss "title" You can have that in your custom layout as TextView ..
Hope it will help.. As it helped me :)
来源:https://stackoverflow.com/questions/10447410/how-to-align-custom-dialog-centre-in-android