2016-04-25 6 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"は本物ではないと私は必要なものを示すことだけです。私が求めていることは、あまりにもうまくいくであろう活動だけで行うことができます。 p.s.私はノブです。ありがとう

+1

なぜJavaコードに余白を設定していませんか? –

答えて

1

いいえ、できません。他のXMLリソースからの定数と値のみを参照できますが、Javaコードは参照できません。

代わりに、異なるスクリーンサイズの値を計算し、対応するresフォルダにdimens.xmlと入力します。計算できない場合は、実行時にMarginLayoutParamsに設定してください。

関連する問題