2016-04-25 8 views
3

Ich muss wissen, ob ich eine berechnete Zahl von meiner Haupttätigkeit erhalten und auf meine layout.xml zugreifen kann.Ist es möglich, den Wert einer Variablen aus der Aktivität in der layout.xml android zu erhalten?

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 Code

<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" /> 

Die Linie android:layout_marginTop="@MainActivity.java/margin_top_str" nicht real ist und ist nur zu zeigen, was ich brauche. Wenn das, was ich frage, nur in der Aktivität getan werden kann, würde das auch gut funktionieren. p.s. Ich bin ein Neuling. Danke

+1

Warum legen Sie den Rand im Java-Code nicht fest? –

Antwort

1

Nein, können Sie nicht. Sie können nur auf Konstanten und Werte aus anderen XML-Ressourcen verweisen, aber Sie können nicht auf Java-Code verweisen.

Berechnen Sie stattdessen den Wert für die verschiedenen Bildschirmgrößen und legen Sie die entsprechenden Ordner in dimens.xml. Wenn es nicht berechnet werden kann, dann setze es einfach in Laufzeit über MarginLayoutParams.

Verwandte Themen