wake-up-neo.com

Wie passen Sie die Breite und Höhe an, wenn eine Aktivität als Dialog angezeigt wird?

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?

28
Leem

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); 
41
Leem

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));
1
Harish Rana
0
Stefan H Singer

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

0
Maidul

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.

0

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)
    }
0
Djek-grif