2013-07-05 9 views
22

Voglio costruire un'interfaccia utente come questa http://postimg.org/image/fihidv1rv/. Ecco il mio codice XML per esso, per il mio disegno, voglio "EFFETTO" & "CAMERA" per combinare come uno ImageView come "SHOP" nel link quindi ci sarà totale 5 ImageView s, e impostare l'ID come hanno chiamato nel collegamentoAndroid, come impostare la visualizzazione di immagini con la percentuale in relativelayout

il problema è, come posso impostare l'altezza e la larghezza con la percentuale? effetto

+ camrea: altezza 25%, larghezza 100%

collage: altezza 25%, larghezza 50%

pareggio: altezza 25%, larghezza 50%

foto: altezza 50% , larghezza 50%

negozio: altezza 25%, larghezza 100%

vi ringrazio molto: '(

<RelativeLayout android:id="@+id/mainContent" android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:orientation="horizontal" android:background="#ffffff"> 
    <ImageView 
     android:id="@+id/img_effect+camera" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:src="@drawable/a" /> 
    <ImageView 
     android:id="@+id/img_collage" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/img_effect+camera" 
     android:src="@drawable/b" /> 
    <ImageView 
     android:id="@+id/img_draw" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@+id/img_effect+camera" 
     android:layout_toRightOf="@+id/img_collage" 
     android:src="@drawable/c" /> 
    <ImageView 
     android:id="@+id/img_photo" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_toRightOf="@+id/img_collage" 
     android:layout_below="@+id/img_draw" 
     android:src="@drawable/d" /> 
    <ImageView 
     android:id="@+id/img_shop" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/img_photo" 
     android:src="@drawable/e" /> 
</RelativeLayout> 
+0

è necessario utilizzare il peso di layout – Sandy09

+0

controllare la tua domanda. L'altezza totale è fino al 125%. Saranno collage, disegni e foto sulla stessa riga? La percentuale totale è del 150%. – Ethan

+0

che non è proprio il 125% e il 150%, dal momento che sono disposti in ordine speciale, mostra in questo link http://postimg.org/image/fihidv1rv/ – Kennett

risposta

27

È possibile considerare l'utilizzo di Android: layout_weight param nel layout http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html#attr_android:layout_weight

<LinearLayout android:id="@+id/mainContent" android:layout_width="match_parent" android:layout_height="match_parent" 
android:orientation="vertical" android:background="#ffffff"> 
<!-- height 25% --> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:orientation="horizontal"> 

    <ImageView 
     android:id="@+id/img_effect" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:src="@drawable/a" /> 
    <ImageView 
     android:id="@+id/img_camera" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:src="@drawable/a" />  
</LinearLayout> 

<!-- height 50% --> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="2" 
    android:orientation="horizontal"> 

    <!-- width 50% --> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical"> 

     <!-- height 50%% --> 
     <ImageView 
      android:id="@+id/img_collage" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:src="@drawable/a" /> 

     <!-- height 50%% -->  
     <ImageView 
      android:id="@+id/img_draw" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:src="@drawable/a" />  
    </LinearLayout> 

    <!-- width 50% --> 
    <ImageView 
     android:id="@+id/img_photo" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="match_parent" 
     android:src="@drawable/b" /> 
</LinearLayout> 
<!-- height 25%% --> 
<ImageView 
    android:id="@+id/img_shop" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:src="@drawable/e" /> 

+1

funziona !! posso fare un'altra domanda? ad esempio, il mio imageview è 10X10, ma la mia immagine è 10X20, il dispositivo Android mostrerà l'immagine come 5X10 per assicurarsi che l'immagine sia visualizzata correttamente. come posso impostarlo per essere la dimensione originale dell'immagine, ma semplicemente ignorare le troppe parti? forse un po 'complicato, spero tu capisca :) – Kennett

+2

Dovresti dare un'occhiata a android: dimensionType param in ImageView - http://developer.android.com/reference/android/widget/ImageView.ScaleType.html. Gioca con tutte le opzioni disponibili e scegli ciò che funziona meglio per te. E hai sempre un'altra opzione: ritaglia l'immagine prima di passare a ImageView. – Ethan

+0

grazie mille !!hai salvato la giornata del mio amico – A7madev

6

E 'difficile in XML, è possibile farlo con il codice facendo alcuni calcoli. Come fare:

  • Get mainContent altezza & larghezza, che è la vostra vista padre.
  • GetLayoutparams di ogni IMAGEVIEW, e impostare la larghezza altezza &, calcolando l'altezza percentuale & larghezza Codice

Esempio: (in attività)

final View parentView= findViewById(R.id.mainContent); 
final ImageView effect_camera= (ImageView)findViewById(R.id.img_effect+camera); 

effect_camera.post(new Runnable(){ 
    @Override 
    public void run(){ 
    int height=parentView.getHeight(); 
    int width=parentView.getWidth(); 


    RelativeLayout.LayoutParams lp= (RelativeLayout.LayoutParams)effect_camera.getLayoutParams(); 
    int percentHeight=height*.25; 
    int percentWidth= width*1; 
    lp.height=percentHeight; 
    lp.width=percentWidth; 
    effect_camera.setLayoutParams(lp); 
} 
}); 
+4

Fai attenzione: se inserisci questo codice nel metodo onCreate, parentView.getHeight() e .getWidth() restituiranno 0, poiché le viste non sono ancora state disegnate. – chteuchteu

+1

dove dovrebbe essere aggiunto? –

+1

È meglio chiamare con un metodo 'View.post (Runnable)', che significa 'runnable' verrà chiamato quando la vista viene disegnata sullo schermo. Sopra ad esempio è stato aggiornato. – vakman

Problemi correlati