it-swarm.com.ru

Как настроить ширину и высоту при отображении действия в виде диалога

Если я определил активность:

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, чтобы она больше походила на небольшой диалог? (В настоящее время он занимает большую часть экрана по умолчанию)

----------------------------Обновить------------------- ----

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

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

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

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

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

в тему не влияют, почему?

28
Leem

Наконец-то я нашел способ настроить размер моей DialogActivity

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

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

this.getWindow().setAttributes(params); 
41
Leem

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

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

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

 setContentView(R.layout.activity_layout);
 getWindow().setLayout(width(pixels),height(pixels));
1
Harish Rana

Вам необходимо указать собственную тему диалога, см. http://developer.Android.com/guide/topics/ui/themes.html и Как изменить тему для AlertDialog

0
Stefan H Singer

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

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

0
Maidul

Там есть однострочный код без хлопот с LayoutParams, который

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

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

0
Lalit Singh Fauzdar

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

override fun onStart() {
        super.onStart()
        window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
    }
0
Djek-grif