2013-09-02 9 views
1

J'ai un wich de mise en page est niché comme ceci:android - Réglage de la hauteur ScrollView dynamique

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ScrollView 
     android:id="@+id/scrollAplicacoes" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:paddingBottom="@dimen/activity_vertical_margin" 
      android:paddingLeft="@dimen/activity_horizontal_margin" 
      android:paddingRight="@dimen/activity_horizontal_margin" 
      android:paddingTop="@dimen/activity_vertical_margin" > 

      <TextView 
       android:id="@+id/titulo" 
       android:layout_width="match_parent" 
       android:layout_height="60dp" 
       android:fontFamily="Arial" 
       android:lineSpacingExtra="-5dp" 
       android:text="@string/titulo_aplicacao" 
       android:textColor="#3c3c3c" 
       android:textSize="25sp" 
       android:textStyle="bold"/> 

      <ImageView 
       android:id="@+id/btnAplicacaoUm" 
       android:layout_width="match_parent" 
       android:layout_height="150dp" 
       android:onClick="selectAplicacao" 
       android:src="@drawable/aplicacoes_item1" /> 

      <ImageView 
       android:id="@+id/btnAplicacaoDois" 
       android:layout_width="match_parent" 
       android:layout_height="150dp" 
       android:layout_marginTop="10dp" 
       android:onClick="selectAplicacao" 
       android:src="@drawable/aplicacoes_item2" /> 

      <ImageView 
       android:id="@+id/btnAplicacaoTres" 
       android:layout_width="match_parent" 
       android:layout_height="150dp" 
       android:layout_marginTop="10dp" 
       android:onClick="selectAplicacao" 
       android:src="@drawable/aplicacoes_item3" /> 

     </LinearLayout> 

    </ScrollView> 

    <LinearLayout 
     android:id="@+id/menuFixo" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:background="@drawable/faixa_below" > 

     <ImageView 
      android:id="@+id/belowHome" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:contentDescription="@string/descBtnHome" 
      android:layout_marginTop="5dp" 
      android:src="@drawable/below_home_sel" /> 

     <ImageView 
      android:id="@+id/belowCalculadora" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="abreCalculadora" 
      android:contentDescription="@string/descBtnCalculadora" 
      android:layout_marginTop="5dp" 
      android:src="@drawable/below_calc" /> 

     <ImageView 
      android:id="@+id/belowProdutos" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:contentDescription="@string/descFaixaProdutos" 
      android:layout_marginTop="5dp" 
      android:layout_weight="1" 
      android:src="@drawable/below_produtos" /> 

    </LinearLayout> 

</RelativeLayout> 

Le problème est que l'LinearLayout en dehors du ScrollView, à l'extrémité est fixée sur le fond, et le défilement est placé derrière. J'ai donc besoin que le défilement soit la hauteur de l'écran moins cette hauteur de LinerLayout fixe moins une petite marge.

J'ai essayé ceci:

(...) 
int scrollFInalHeight = scrollHeight - fixedMenuHeight - 10; 

ViewGroup.LayoutParams param = new ViewGroup.LayoutParams(scrollStartWidth, scrollFInalHeight); 
scroll.setLayoutParams(param); 

Mais les application se bloque quand je commence à cette activité. Ce code Java est dans la méthode public void onWindowFocusChanged (boolean hasFocus).

Des suggestions? Merci d'avance! ;)

Répondre

3

Avez-vous essayé de mettre

android:layout_above="@+id/menuFixo" 

dans votre ScrollView?

+0

En effet, il est logique, mais il retourne l'erreur ci-dessous, même si c'est l'ID correct pour le LinearLayout ci-dessous. erreur: Erreur: Aucune ressource trouvée correspondant au nom donné (à 'layout_above' avec la valeur '@ id/menuFixo'). –

+1

Ouais, ma mauvaise. Ajoutez le signe +! Cela arrive parce que le compilateur lit les identifiants depuis le haut. :) – Enrichman

+0

Merci! C'est juste bien maintenant. Mais, ce signe + n'est-il pas utilisé pour définir l'identifiant, pas pour sélectionner l'identifiant? C'est un de ces trucs "je ne sais pas pourquoi mais ça marche" pour moi. –

4

Vous devez régler la hauteur

scroll_view.setLayoutParams(new RelativeLayout.LayoutParams(
       LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

ou

scroll_view.setLayoutParams(new RelativeLayout.LayoutParams(
       LayoutParams.FILL_PARENT, 350)); 
+0

http://developer.android.com/reference/android/widget/ScrollView.html – aNiKeT

3

@ La réponse de aniket est correcte, mais il sera plus en sécurité avec

ViewGroup.LayoutParams layoutParams = mDescriptionScrollView.getLayoutParams(); 
      layoutParams.height = scrollViewHeight; 
Questions connexes