Как настроить ширину и высоту, когда показ деятельности в виде диалога - PullRequest
30 голосов
/ 08 июля 2011

Если я определил действие:

public class DialogActivity extends Activity{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(dialog_activity.xml);
    }


}

, я хотел бы отобразить вышеуказанное действие в виде диалога, поэтому в файле AndroidManifest.xml , Я объявляю это действие, как показано ниже:

<activity android:name=".DialogActivity" android:theme="@android:style/Theme.Dialog"/>

На этом этапе все в порядке, мой DialogActivity отображается в виде диалога.

Проблема заключается в том, как настроить ширину и высотуDialogActivity чтобы сделать его больше похожим на маленький диалог?(В настоящее время он занимает большую часть экрана по умолчанию)

---------------------------- Update-----------------------

Я определил пользовательскую тему, как показано ниже:

<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>

Затем,объявите DialogActivity в AndroidManifest.xml как.

<activity android:name=".DialogActivity" android:theme="@style/myDialog"/>

Мой DialogActivity теперь даже занимает весь экран :(. Ширина и высота определение:

<item name="android:width">100dip</item>

в теме не имеют никакого эффекта, почему?

Ответы [ 5 ]

42 голосов
/ 08 июля 2011

Я наконец-то нашел один способ настроить размер моего DialogActivity.

Это внутри onCreate() метода DialogActivity, добавьте следующий код:

WindowManager.LayoutParams params = getWindow().getAttributes();  
params.x = -20;  
params.height = 100;  
params.width = 550;  
params.y = -10;  

this.getWindow().setAttributes(params); 
1 голос
/ 08 февраля 2019

Вы можете просто изменить параметры окна в вашей активности, например:

1 голос
/ 19 апреля 2017

У меня была похожая проблема, я использовал следующую тему для своей деятельности

android:theme="@style/Base.Theme.AppCompat.Light.Dialog"

Следующий код исправил мою проблему

 setContentView(R.layout.activity_layout);
 getWindow().setLayout(width(pixels),height(pixels));
0 голосов
/ 14 марта 2018

Существует однострочный код без излишеств с LayoutParams, который равен

getWindow().setLayout((int)(width*.8),(int)(height*.25));

Это то, что я использовал раньше в одном из моих проектов и сейчас ищу, но нашел его в том же проекте.

0 голосов
/ 28 июня 2012

Вы можете установить высоту и ширину макета в XML-файле макета

Вы можете даже упомянуть такие значения, как «240 пикселей» для Android: layout_width / android: layout_height

...