2016-04-25 68 views
3

我需要知道我是否可以從我的主要活動中獲取計算出的數字,並從layout.xml中訪問它。是否有可能從layout.xml android中的活動獲取變量的值?

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"是不存在的,只是表明我需要什麼。如果我所要求的只能在可以正常工作的活動中完成。附:我是一個noob。謝謝

+1

你爲什麼不在java代碼中設置邊距? –

回答

1

不,你不能。您只能從其他XML資源引用常量和值,但不能引用Java代碼。

取而代之的是,計算不同屏幕尺寸的值並將其放到dimens.xml的相應res文件夾中。如果無法計算,則只需在運行時通過MarginLayoutParams進行設置。

相關問題