sle*_*dav 11 java android dialog android-dialog
我正在寻找一种方法来获得自定义对话框的大小.我经历了这个问题,但是给出的唯一答案是没用的,因为如果我尝试mDialog.getWindow().getAttributes().height;它只返回-2,这是WRAP_CONTENT我设置为对话的属性的常量.我怎样才能得到它的大小.我想知道背景图像的siye.
Kor*_*oly 20
试试看:
mDialog.getWindow().getDecorView().getHeight()
Run Code Online (Sandbox Code Playgroud)
Mic*_*hal 12
实际上,在Android中它不像在iOS中那样工作 - 你无法获得View自身的大小,但你可以做的是要求查看该视图的ROOT布局的大小.
例如:
myDialog.this.findViewById(R.id.dialog_root_layout).getHeight());
@Kormilsev Anatoliy回答正确,我正在改善。因此,在您从Dialog类继承的类中,只需重写该方法即可:
@Override
public void onWindowFocusChanged (boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
height = getWindow().getDecorView().getHeight();
}
Run Code Online (Sandbox Code Playgroud)
小智 5
以防万一,如果您有自己的自定义对话框 XML 布局。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/dialog_main_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@color/primaryBackground">
/* whatever you want here */
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
活动中:
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.popup_gameover);
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface d) {
View view = dialog.findViewById(R.id.dialog_main_layout);
int width = view.getWidth();
int height = view.getHeight();
...
}
});
Run Code Online (Sandbox Code Playgroud)
这width和height预想的完全一样。
| 归档时间: |
|
| 查看次数: |
13262 次 |
| 最近记录: |