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

Lee*_*eem 30 android android-widget android-manifest android-emulator android-layout

如果我已经定义了一个Activity:

public class DialogActivity extends Activity{

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


}
Run Code Online (Sandbox Code Playgroud)

想像对话框一样显示上面的活动,所以在AndroidManifest.xml文件中,我声明这个活动如下:

<activity android:name=".DialogActivity" android:theme="@android:style/Theme.Dialog"/>
Run Code Online (Sandbox Code Playgroud)

此时一切都很好,我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>
Run Code Online (Sandbox Code Playgroud)

然后,DialogActivityAndroidManifest.xml中声明为.

<activity android:name=".DialogActivity" android:theme="@style/myDialog"/>
Run Code Online (Sandbox Code Playgroud)

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

<item name="android:width">100dip</item>
Run Code Online (Sandbox Code Playgroud)

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

Lee*_*eem 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); 
Run Code Online (Sandbox Code Playgroud)

  • 我修改过的活动的边框是黑色的.有没有办法让它们半透明? (4认同)
  • **this.getWindow()setAttributes(PARAMS);**必须在setContentView(int res)之后. (4认同)
  • 有没有办法在 XML 中干净地完成它而不是在代码中? (2认同)