2017-07-26 2 views
-1

J'essaye de changer ma hauteur LinearLayout à 50% de la disposition parent quand je clique sur un bouton. Je l'ai fait avec LinearLayout.LayoutParams mais cela ne change pas la hauteur de ma mise en page si je l'appelle quand on clique sur buttonClick depuis une méthode en dehors de onCreate. Mais si je garde LinearLayout.LayoutParams dans onCreate alors ça marche. Comment puis-je le faire quand je clique sur un bouton?L'utilisation de layoutparams en dehors de la méthode oncreate ne fonctionne pas

Ce code fonctionne:

public class ViewReport extends AppCompatActivity { 

Button button; 
LinearLayout layout; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_view_report); 

    button=(Button) findViewById(R.id.button); 
    layout=(LinearLayout) findViewById(R.id.fold); 

    final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) layout.getLayoutParams(); 
    lp.height = 0; 
    lp.width=LinearLayout.LayoutParams.MATCH_PARENT; 
    lp.weight=0.5f; 

} 
} 

Ce code ne fonctionne pas:

public class ViewReport extends AppCompatActivity { 

Button button; 
LinearLayout layout; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_view_report); 

    button=(Button) findViewById(R.id.button); 
    layout=(LinearLayout) findViewById(R.id.fold); 
} 


public void Click(View view) 
{ 
    Toast.makeText(getApplicationContext(),"tapped",Toast.LENGTH_LONG).show(); 
    LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) layout.getLayoutParams(); 
    lp.height = 0; 
    lp.width=LinearLayout.LayoutParams.MATCH_PARENT; 
    lp.weight=0.5f; 
} 
} 

Mise en page XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context="me.imbishal.imageblur.ViewReport" 
android:weightSum="1"> 

<LinearLayout 
    android:id="@+id/fold" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:background="@drawable/profilepageback" 
    android:orientation="vertical"> 

    <EditText 
     android:id="@+id/editText4" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:layout_marginBottom="3dp" 
     android:background="@drawable/my_button" 
     android:ems="10" 
     android:inputType="textPersonName" /> 

    <EditText 
     android:id="@+id/editText3" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:layout_marginBottom="5dp" 
     android:background="@drawable/my_button" 
     android:ems="10" 
     android:inputType="textPersonName" /> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:background="@drawable/just_border" 
     android:onClick="Click" 
     android:text="Button" /> 
</LinearLayout> 

Répondre

0

Vous avez modifié vos LayoutParams mais vous ne les avez pas définis. Ajouter cette ligne

layout.setLayoutParams(lp); 
+0

Quelle erreur stupide: (J'ai oublié de mettre LayoutParams pour ma mise en page Merci beaucoup @KingintheNorth –