我有一个警报对话框,我想根据我的屏幕设备来设置宽度和高度,而不是像1300,880这样的常数。
如何在非活动和非片段类中获取宽度和高度?
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);
}
答案 0 :(得分:0)
您无法直接获取完全取决于活动生命周期的组件高度宽度的值。
您可以做什么,您可以将e引用传递给非活动类中可用的上下文,并通过该上下文获取结果。
例如,您要获取设备屏幕的比例或高度/宽度或密度,可以执行以下操作:
public static int getScreenHeightInDP(Context context) {
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
float screenHeightInDP = displayMetrics.heightPixels / displayMetrics.density;
return Math.round(screenHeightInDP);
}
修改
针对您的情况,制作一个类似的Utility类,
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);
}
}
答案 1 :(得分:0)
也许您可以将其作为静态变量存储在启动活动中。
private fun init() {
// Get Device Width and Height in Px
val displayMetrics = DisplayMetrics()
windowManager.defaultDisplay.getMetrics(displayMetrics)
DEVICE_WIDTH = displayMetrics.widthPixels
DEVICE_HEIGHT = displayMetrics.heightPixels
}
companion object {
var DEVICE_WIDTH = 0
var DEVICE_HEIGHT = 0
}
答案 2 :(得分:0)
我们可以将其用于包装内容高度或宽度以用于自定义警报对话框:
mDialog.getWindow().setLayout(getScreenWidthInDP(mDialogView.getContext()), ViewGroup.LayoutParams.WRAP_CONTENT);
public static int getScreenHeightInDP(Context context) {
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
float screenHeightInDP = displayMetrics.heightPixels / displayMetrics.density;
return Math.round(screenHeightInDP);
}
我希望能对您有所帮助