Wenn ich eine Aktivität definiert habe:
public class DialogActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(dialog_activity.xml);
}
}
Ich möchte die obige Aktivität wie ein Dialogfeld anzeigen. In der DateiAndroidManifest.xmlerkläre ich diese Aktivität wie folgt:
<activity Android:name=".DialogActivity" Android:theme="@Android:style/Theme.Dialog"/>
An diesem Punkt ist alles in Ordnung, meine DialogActivity
zeigte sich als Dialog.
Das Problem ist, wie man die Breite und Höhe der DialogActivity
so anpasst, dass sie einem kleinen Dialog ähnlicher wird. (Derzeit nimmt es den Großteil des Bildschirms standardmäßig ein.)
---------------------------- Update ------------------- ----
Ich habe ein benutzerdefiniertes Thema wie folgt definiert:
<style name="myDialog" parent="@Android:style/Theme.Dialog">
<item name="Android:windowFrame">@null</item>
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowIsFloating">true</item>
<item name="Android:windowContentOverlay">@null</item>
<item name="Android:width">100dip</item>
<item name="Android:height">100dip</item>
</style>
Dann deklarieren Sie die Variable DialogActivity
inAndroidManifest.xmlals.
<activity Android:name=".DialogActivity" Android:theme="@style/myDialog"/>
Meine DialogActivity
belegt jetzt sogar den gesamten Bildschirm :(. Die Breite und Höhe Definition:
<item name="Android:width">100dip</item>
in dem Thema keine Wirkung, warum?
Ich fand schließlich eine Möglichkeit, die Größe meiner DialogActivity
anzupassen.
Befindet sich in der onCreate()
-Methode von DialogActivity
, fügen Sie den folgenden Code hinzu:
WindowManager.LayoutParams params = getWindow().getAttributes();
params.x = -20;
params.height = 100;
params.width = 550;
params.y = -10;
this.getWindow().setAttributes(params);
Ich hatte ein ähnliches Problem, ich verwendete folgendes Thema für meine Aktivität
Android:theme="@style/Base.Theme.AppCompat.Light.Dialog"
Der folgende Code hat mein Problem behoben
setContentView(R.layout.activity_layout);
getWindow().setLayout(width(pixels),height(pixels));
Sie müssen Ihr eigenes Dialogdesign angeben, siehe http://developer.Android.com/guide/topics/ui/themes.html und So ändern Sie das Design für AlertDialog
Sie können die Höhe und Breite des Layouts in der Layout-XML-Datei festlegen
Sie können sogar Werte wie "240px" für Android angeben: layout_width/Android: layout_height
Es gibt einen einzeiligen Code ohne sich mit LayoutParams zu beschäftigen
getWindow().setLayout((int)(width*.8),(int)(height*.25));
Dies ist, was ich zuvor in einem meiner Projekte verwendet habe und nun gesucht habe, es aber im selben Projekt gefunden habe.
Sie können die Fensterparameter Ihrer Aktivität einfach wie folgt ändern:
override fun onStart() {
super.onStart()
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
}