首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在非活动类和非片段类中获得宽度和高度?

如何在非活动类和非片段类中获得宽度和高度?
EN

Stack Overflow用户
提问于 2018-12-16 08:09:17
回答 3查看 241关注 0票数 0

我有一个警告对话框,我想设置宽度和高度取决于我的屏幕设备,而不是像1300,880这样的常数。

如何在非活动类和非片段类中获得宽度和高度?

代码语言:javascript
复制
static abstract class BaseHolder extends RecyclerView.ViewHolder {
.
.
.

   LayoutInflater inflater = (LayoutInflater) mViewAction.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mDialog = new Dialog(mViewAction.getContext());    
        mDialogView = inflater.inflate(R.layout.dialog_deletetoken, null);
        mDialog.setContentView(mDialogView);


mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    mDialog.getWindow().setLayout(1300,880);
}
EN

Stack Overflow用户

回答已采纳

发布于 2018-12-16 08:21:28

您无法直接获得组件高度宽度的值,这完全取决于活动生命周期。

您可以将引用传递给非活动类中可用的上下文,并通过该上下文获得结果。

例如,如果您想获得设备屏幕比率或高度/宽度或密度,您可以这样做:

代码语言:javascript
复制
public static int getScreenHeightInDP(Context context) {
    DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();

    float screenHeightInDP = displayMetrics.heightPixels / displayMetrics.density;

    return Math.round(screenHeightInDP);
}

编辑

对于您的情况,创建一个像这样的实用程序类,

代码语言:javascript
复制
public class Utility {


public static void setLayout(DialogFragment dialogFragment) {
    DisplayMetrics displayMetrics = dialogFragment.getResources().getDisplayMetrics();

    int height = displayMetrics.heightPixels;
    int width = displayMetrics.widthPixels;

    if(dialogFragment.getDialog().getWindow()!=null)
        dialogFragment.getDialog().getWindow().setLayout(width,height);

}
}
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53800493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档