1

我有一个使用 Dialog 主题的活动。

<activity android:name=".GamePreviewDialog" 
        android:theme="@android:style/Theme.Dialog"
        android:label="Chess Set Preview">

我不知道如何获得对话框的宽度。通常,如果它不是一个对话框,我会在布局上使用 getWidth()。但是,这样做是行不通的。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/gamePreviewMainLayout"
    android:background="@color/game_background">
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/gamePreviewButtonView"
        android:id="@+id/gamePreview"
        android:background="@color/game_background">
    </RelativeLayout>           
    <LinearLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:layout_alignParentBottom="true" 
        android:id="@+id/gamePreviewButtonView"
        android:background="@color/background">

        <Button 
            android:text="Close" 
            android:id="@+id/previewCloseBtn"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/chess_mates_btn">
        </Button>
    </LinearLayout>
</RelativeLayout>

在我的 contentView 按照其他帖子中的建议设置后,我也尝试过调用它。关于如何以编程方式获取宽度的任何想法?

getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
4

3 回答 3

0

所以事实证明这不是因为Dialog主题,而是因为它是RelativeLayout并且它不知道onResume时的宽度。要解决此问题,您可以在设置视图后使用 View.post() 方法执行设置代码。在这里找到了这个解决方案android getHeight()/getWidth with RelativeLayout

于 2012-10-29T16:50:29.427 回答
0

当您设置布局宽度 FILL_PARENT 时,您可以获得屏幕尺寸,即您现在的视图宽度

于 2014-05-21T02:59:44.470 回答
-2

onCreate()方法之后,您可以获得高度和宽度。

于 2012-10-29T06:14:40.767 回答