2012-04-13 3 views
0

Ich weiß nur, das einfach ist und in etwa 30 Minuten Zeit, ich werde mich hassen ...Positionierung mit Blick nach oben, ausgedrückt als Prozentsatz der Anzeigehöhe

Ich habe einen Begrüßungsbildschirm, die aus einem statischen Bild besteht was den Bildschirm ausfüllt. Also setze ich einfach das Hintergrundattribut der Wurzelansicht, die ich in meinem Layout verwende.

Das Bild hat einen leeren Bereich, über den ich eine Schaltfläche "Ich akzeptiere" platzieren muss. Um mit verschiedenen Auflösungen umgehen zu können, muss ich sie mit einem Prozentsatz der Displayhöhe positionieren - 58% ist der Spot.

Ich kann layout_weight nicht verwenden, da die Größe der Schaltfläche und absolutelayout (Festlegen der y-Position im Code) veraltet ist.

Wie kann ich das erreichen? Es ist mir egal, welche Viewgroup die Eltern sind, und mir geht es gut, wenn ich "leere" Ansichten habe, die Platz füllen.

Ich bin mit dem Ziel diese vollständig in dem Layout XML zu tun, meinen Code sauber zu halten ...

Dank!

Antwort

4

Sie sagen, Sie können nicht verwenden layout_weight, aber das ist Ihre einzige Option, wenn Sie es rein in XML tun möchten. Ich verstehe nicht, warum du denkst, dass du es sowieso nicht benutzen kannst. Hier ist ein Beispiel dafür, wie Sie es tun könnte:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/splash" 
    android:orientation="vertical" > 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="58" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="42" > 

      <!-- Place buttons here --> 

    </LinearLayout> 
</LinearLayout> 
+0

denke ich, Simon war besorgt, dass die Anwendung 'layout_weight' auf die' Button' selbst würde auf 42% des Bildschirms erzwingen Dimensionierung seiner Höhe. Das Gewicht auf ein 'LinearLayout' zu übertragen, wie Sie es vorschlagen, verhindert das offensichtlich und erlaubt dem' Button', seine "natürliche" Größe anzunehmen. – Squonk

+0

Danke Jason. Wie erwartet, ein "Doh" -Moment :) Das funktioniert ein Champion ... – Simon

0

Ich habe keine andere Art und Weise sehen, die eine layout_weight zu verwenden ... Auch die ganze Klasse AbsoluteLayout ist veraltet, so versuchen Sie es mit, es zu vermeiden. Ich schlage vor, eine LinearLayout als Ihre rootView mit einer gegebenen weight_sum von 1 zu verwenden. Fügen Sie eine andere Space-füllende LinearLayout-Breite eine Gewichtung von 0,58 und unterhalb Ihrer Schaltfläche mit wrap_content-Attributen hinzu. Leider kann ich Ihnen nicht mehr sagen, wenn Sie nicht Ihre XML-Datei posten, damit ich sehen kann, was Sie erreichen wollen. Art dies sollte funktionieren:

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/your_desired_background" 
    android:orientation="vertical" 
    android:weight_sum="1"> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight=".58" /> 
    <Button 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 
Verwandte Themen