是否有可能从layout.xml android中的活动中获取变量的值?

时间:2016-04-25 23:47:05

标签: java android xml

我需要知道我是否可以从主活动中获取计算出的数字,并从我的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"行不是真实的,只是为了表明我需要的东西。如果我要求的只能在可以正常工作的活动中完成。附:我是个菜鸟。感谢

1 个答案:

答案 0 :(得分:1)

不,你不能。您只能从其他XML资源引用常量和值,但不能引用Java代码。

相反,计算不同屏幕尺寸的值并将其放入dimens.xml中的相应res文件夹。如果无法计算,则只需通过MarginLayoutParams在运行时设置它。