Java 是否可以从layout.xml中的活动获取变量的值?

Java 是否可以从layout.xml中的活动获取变量的值?,java,android,xml,Java,Android,Xml,我需要知道是否可以从我的主要活动中获得一个计算出的数字,并从layout.xml访问它 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DisplayMetrics displaymetrics = new DisplayMetrics(); getWind

我需要知道是否可以从我的主要活动中获得一个计算出的数字,并从layout.xml访问它

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    int height = displaymetrics.heightPixels;
    int width = displaymetrics.widthPixels;
    float margin_top = (1920f/height) * 125;
    String margin_top_str = Float.toString(margin_top) + "dp";
}
layout.xml代码

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/app_name"
    android:id="button"
    android:background="#f57878"
    android:textSize="48dp"
    android:layout_alignParentTop="true"
    android:layout_marginTop="@MainActivity.java/margin_top_str"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:textColor="#000000" />


android:layout_marginTop=“@MainActivity.java/margin_top_str”这一行不是真的,只是为了显示我需要的东西。如果我所要求的只能在活动中完成,那也会很好。p、 我是个笨蛋。谢谢

不,你不能。您只能引用来自其他XML资源的常量和值,但不能引用java代码


相反,计算不同屏幕大小的值并放入
dimens.xml
中相应的res文件夹。如果无法计算,那么只需在运行时通过
MarginLayoutParams

设置它,为什么不在java代码中设置边距?