Ich brauche den Dialog, um den Bildschirm auszufüllen, abgesehen von etwas Platz am oberen und unteren Rand .. Ich habe nach einer Lösung gesucht, konnte aber wahrscheinlich keine finden, weil ich sie in einer onClickListener
deklariere. Kann jemand bitte eine Lösung geben?
Aktivitätscode:
sort.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder sort = new AlertDialog.Builder(HomeScreen.this);
// Get the layout inflater
LayoutInflater inflater = HomeScreen.this.getLayoutInflater();
View sortView = inflater.inflate(R.layout.sort_layout, null);
sort.setView(sortView);
sort.create().show();
}
});
XML:
<?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:layout_marginBottom="50dp"
Android:layout_marginTop="50dp"
Android:background="@color/white"
Android:orientation="vertical" Android:layout_gravity="center">
+ some more stuff here I dont think it's relevant
</LinearLayout>
stellen Sie hier Ihre Bildschirmbreite und -breite auf den Dialog ein
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = width;
lp.height = height;
dialog.getWindow().setAttributes(lp);
oder in deinen Styles dann einen Style wie diesen erstellen
<style name="DialogTheme" parent="Android:Theme.Dialog">
<item name="Android:layout_width">fill_parent</item>
<item name="Android:layout_height">fill_parent</item>
<!-- No backgrounds, titles or window float -->
<item name="Android:windowBackground">@null</item>
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowIsFloating">false</item>
</style>
erstellen Sie ein Dialogobjekt wie dieses
dialog = new Dialog(this, R.style.DialogTheme);
Bearbeiten ::
holen Sie sich Breite und Höhe für jedes Gerät, das es füllt.
WindowManager manager = (WindowManager) getSystemService(Activity.WINDOW_SERVICE);
int width, height;
LayoutParams params;
if (Build.VERSION.SDK_INT > VERSION_CODES.FROYO) {
width = manager.getDefaultDisplay().getWidth();
height = manager.getDefaultDisplay().getHeight();
} else {
Point point = new Point();
manager.getDefaultDisplay().getSize(point);
width = point.x;
height = point.y;
}
erstellen Sie zunächst einen benutzerdefinierten Stil für den Dialog in der Datei style.xml:
<style name="full_screen_dialog" parent="@Android:style/Theme.Dialog">
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowFullscreen">true</item>
<item name="Android:windowIsFloating">true</item>
<item name="Android:windowContentOverlay">@null</item>
<item name="Android:windowAnimationStyle">@Android:style/Animation.Dialog</item>
<item name="Android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="Android:windowBackground">@Android:color/transparent</item>
</style>
Dann setzen Sie dieses Thema auf Ihren Alert Dialog
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.full_screen_dialog));
Oder Sie können eine neue Aktivität aufrufen und dieser Aktivität als Design in Ihrer Manifestdatei diesen benutzerdefinierten Stil zuweisen ...
Dies kann für jemanden hilfreich sein. Ich möchte, dass ein Dialog die gesamte Bildschirmbreite einnimmt. viel gesucht, aber nichts brauchbares gefunden. Endlich hat das für mich funktioniert:
mDialog.setContentView(R.layout.my_custom_dialog);
mDialog.getWindow().setBackgroundDrawable(null);
nachdem Sie dies hinzugefügt haben, wird mein Dialog in voller Bildschirmbreite angezeigt.
versuche dies
aktivität, für die der Stil "Theme.Dialog" festgelegt wurde:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
}
Objekt wie unter dem Thema erstellen
Dialog objD = new Dialog(this, Android.R.style.Theme_Translucent_NoTitleBar);
Ich denke, Sie sollten dies versuchen:
Im dialogFragment :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, Android.R.style.Theme_Black_NoTitleBar_Fullscreen);
}
Erstellen Sie auf einfachste Weise einen Vollbilddialog wie folgt:
<style name="DialogFullScreenTheme" parent="Theme.AppCompat.Light.DialogWhenLarge">
<item name="windowNoTitle">true</item>
<item name="Android:statusBarColor">@color/colorPrimaryDark</item>
</style>
dann:
dialog = new Dialog(this, R.style.DialogFullScreenTheme);
Dialog dialog2 = new Dialog(context, R.style.DialogTheme);
dialog2.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog2.getWindow().setBackgroundDrawable(null);
dialog2.setContentView(R.layout.dialog_img);
WindowManager.LayoutParams lp = dialog2.getWindow().getAttributes();
Window window = dialog2.getWindow();
lp.copyFrom(window.getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(lp);
lp.gravity = Gravity.CENTER;
final ImageView imgprofile=(ImageView)dialog2.findViewById(R.id.img_centre);
Picasso.with(context)
.load(arrayImages.get(position).get("image"))
.resize(800,1000)
.centerInside()
.into(imgprofile, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
imgprofile.setImageResource(R.drawable.user);
}
});
dialog2.show();
Fügen Sie in Ihrer Datei dialog_img.xml eine Bildansicht mit scaleType (fitXY) hinzu.