如何显示的活动作为一个对话框时定义的宽度和高度

问题描述 投票:29回答:5

如果我已经定义了一个活动:

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.xml作为。

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

DialogActivity现在甚至占据了整个屏幕:(宽度和高度的定义:

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

在主题不采取任何的效果,为什么呢?

android android-layout android-emulator android-widget android-manifest
5个回答
42
投票

我终于想通了定制我DialogActivity大小的一种方式。

这是onCreate()DialogActivity方法中,添加以下代码:

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

this.getWindow().setAttributes(params); 

2
投票

你可以改变窗口的PARAMS在acctivity这样的:

override fun onStart() {
        super.onStart()
        window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
    }

1
投票

我有类似的问题,我用我的活动主题如下

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

下面的代码固定我的问题

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

0
投票

您可以设置布局的高度和宽度在布局xml文件

你甚至可以像提“320x240像素”为Android的值:layout_width /安卓:layout_height


0
投票

有一个行代码,而与是的LayoutParams hassling

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

这是我在我的项目之一,目前正在寻找使用过,但发现在同一个项目。

© www.soinside.com 2019 - 2024. All rights reserved.