将活动显示为对话框时如何自定义宽度和高度

时间:2011-07-08 12:34:20

标签: android android-layout android-emulator android-widget android-manifest

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

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>

然后,将 AndroidManifest.xml 中的DialogActivity声明为。

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

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

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

在主题中没有任何效果,为什么?

5 个答案:

答案 0 :(得分:41)

我终于想出了一种自定义DialogActivity大小的方法。

这位于onCreate()的{​​{1}}方法内,添加以下代码:

DialogActivity

答案 1 :(得分:1)

我有类似的问题,我使用以下主题进行我的活动

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

以下代码修复了我的问题

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

答案 2 :(得分:1)

您只需更改窗口的参数即可,如:

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

答案 3 :(得分:0)

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

 

你甚至可以为android提供像“240px”这样的值:layout_width / android:layout_height

答案 4 :(得分:0)

有一行单行代码没有讨论

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

这是我之前在我的一个项目中使用过的,现在正在搜索,但在同一个项目中找到它。