2016-06-24 3 views
0

changer l'enfant framelayout hauteur, largeur, gravité par programme?changer l'enfant framelayout hauteur, largeur, gravité par programme?

Je LinearLayout en tant que parent et framelayout comme enfant maintenant, je veux changer la hauteur et la largeur de framelayout programme

Code j'ai essayé mais n'a pas d'effet du tout

public void frame_params(FrameLayout bottomFrameLayout, int weight, int height) { 
    bottomFrameLayout = new FrameLayout(context); 
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(weight, height); 
    lp.gravity = Gravity.BOTTOM | Gravity.LEFT; 
    bottomFrameLayout.setLayoutParams(lp); 

} 

xml

<LinearLayout 
     android:orientation="horizontal" 
     android:id="@+id/relativelayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/hv_effect" 
     android:layout_below="@+id/effect_hedaer_toolbar"> 

     <FrameLayout 
      android:id="@+id/FrameLayout" 
      android:layout_width="280dp" 
      android:layout_height="300dp" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentLeft="true" 
      android:layout_centerInParent="true" 
      android:layout_gravity="bottom|left"> 
</FrameLayout> 
</Linearlayout> 

Répondre

0

Je pense que cette ligne est votre problème:

bottomFrameLayout = new FrameLayout(context); 

Dans la méthode frame_params, vous recevez un FrameLayout. Mais, alors, vous instanciez un NOUVEAU avec cette ligne. Donc, en effet, le FrameLayout à l'intérieur de LinearLayout continuera de la même manière, parce que vous ne le changez pas, vous créez un nouveau FrameLayout et vous lui définissez les paramètres. Juste essayer de supprimer la ligne ci-dessus, comme celui-ci:

public void frame_params(FrameLayout bottomFrameLayout, int weight, int height) { 
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(weight, height); 
    lp.gravity = Gravity.BOTTOM | Gravity.LEFT; 
    bottomFrameLayout.setLayoutParams(lp); 

} 

Et puis, passer le FrameLayout correct (l'un avec l'id « FrameLayout », tel que spécifié dans votre xml), il devrait fonctionner. Faites-moi savoir si cela a fonctionné, et, si c'est le cas, n'oubliez pas d'upvote/sélectionnez comme la bonne réponse, acclamations:)