2010-11-08 29 views

risposta

188

In realtà è possibile, nonostante quello che viene detto in altre risposte. Se si dispone di un FrameLayout e si desidera posizionare un elemento figlio nella parte inferiore, è possibile utilizzare android:layout_gravity="bottom" e questo allineerà il bambino alla fine dello FrameLayout.

So che funziona perché lo sto usando. So che è in ritardo, ma potrebbe tornare utile agli altri dal momento che questo si colloca nelle prime posizioni su Google

+7

Ciao byte1918, se ritieni che questa non sia la risposta giusta per la domanda, sei più che benvenuto - e penso che sarebbe utile per tutti - se pubblichi la soluzione giusta. O almeno spieghi cosa rende questa una risposta sbagliata. Grazie. – lblasa

+14

Per allineare in basso a destra è possibile utilizzare Android: layout_gravity = "bottom | right" –

+1

se non riflette immediatamente in anteprima, provare a impostare dalla scheda di progettazione. di solito funziona, – yUdoDis

-4

Non è possibile farlo con FrameLayout.

Da spec:. ​​

http://developer.android.com/reference/android/widget/FrameLayout.html

"FrameLayout è stato progettato per bloccare l'area dello schermo per visualizzare un singolo oggetto È possibile aggiungere più figli a una FrameLayout, ma tutti i bambini sono ancorato al in alto a sinistra dello schermo. "

Perché non utilizzare RelativeLayout?

+0

Voglio una lista da mostrare sul lato sinistro, sovrapponendo la mappa. Oh, questo è possibile con RelativeLayout vero? Ok grazie. –

+1

"ma tutti i bambini sono ancorati in alto a sinistra dello schermo" - non necessariamente nella parte superiore dello schermo, puoi allinearlo a destra, in basso ecc. Giusto? –

+0

Sì, ciò è possibile con RelativeLayout. Puoi disporre le viste una sopra l'altra. – Juhani

32

può essere raggiunto utilizzando RelativeLayout

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <ImageView 
     android:src="@drawable/icon" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentBottom="true" /> 

</RelativeLayout> 
+1

Questo non funziona, se si usa 'wrap_content' in' RelativeLayout'. Perché poi comunque RelativeLayout ridimensionato su schermo intero. –

2

android: layout_gravity = "bottom"

+0

perché usiamo la gravità, ciò che è specifico per – blackHawk

40

Ho anche imbattuto in questa situazione e capito come farlo utilizzando FrameLayout. Il seguente output è prodotto dal codice riportato di seguito.

Some right-bottom aligned text showing up over an image using FrameLayout.

   <FrameLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" > 

        <ImageView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:src="@drawable/contactbook_icon" 
         android:layout_gravity="center" /> 

        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="140" 
         android:textSize="12dp" 
         android:textColor="#FFFFFF" 
         android:layout_gravity="bottom|right" 
         android:layout_margin="15dp" /> 
       </FrameLayout> 

Modificare il valore del margine per regolare la posizione del testo sull'immagine. La rimozione del margine potrebbe far sì che il testo esca dalla vista a volte.

+0

migliore risposta ... grazie, risolto una lunga mistero in piedi. – YvesLeBorg

12

Impostazione android:layout_gravity="bottom|right" ha lavorato per me

5

due modi per farlo:

1) utilizzando un layout frame

android:layout_gravity="bottom|right" 

2) utilizzando un layout relativo

android:layout_alignParentRight="true" 
android:layout_alignParentBottom="true" 
0

voi possibile aggiungere una TextView invisibile a FrameLayout.

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:visibility="invisible" 
     /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:orientation="horizontal"> 
     <Button 
      android:id="@+id/daily_delete_btn" 
      android:layout_width="0dp" 
      android:layout_height="50dp" 
      android:layout_weight="1" 
      android:text="DELETE" 
      android:layout_gravity="center"/> 
     <Button 
      android:id="@+id/daily_save_btn" 
      android:layout_width="0dp" 
      android:layout_height="50dp" 
      android:layout_weight="1" 
      android:text="SAVE" 
      android:layout_gravity="center"/> 
    </LinearLayout> 

0

Se volete provare con codice Java. Ecco qua -

final LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, 
              LayoutParams.WRAP_CONTENT); 
    yourView.setLayoutParams(params); 
    params.gravity = Gravity.BOTTOM; // set gravity 
Problemi correlati