如果我已经定义了一个活动:
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>
在主题不采取任何的效果,为什么呢?
我终于想通了定制我DialogActivity
大小的一种方式。
这是onCreate()
的DialogActivity
方法中,添加以下代码:
WindowManager.LayoutParams params = getWindow().getAttributes();
params.x = -20;
params.height = 100;
params.width = 550;
params.y = -10;
this.getWindow().setAttributes(params);
你可以改变窗口的PARAMS在acctivity这样的:
override fun onStart() {
super.onStart()
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
}
我有类似的问题,我用我的活动主题如下
android:theme="@style/Base.Theme.AppCompat.Light.Dialog"
下面的代码固定我的问题
setContentView(R.layout.activity_layout);
getWindow().setLayout(width(pixels),height(pixels));
您可以设置布局的高度和宽度在布局xml文件
你甚至可以像提“320x240像素”为Android的值:layout_width /安卓:layout_height
有一个行代码,而与是的LayoutParams hassling
getWindow().setLayout((int)(width*.8),(int)(height*.25));
这是我在我的项目之一,目前正在寻找使用过,但发现在同一个项目。