2017-07-26 42 views
-1

我想要将我的LinearLayout高度更改为父布局的50%,当我单击按钮。我使用LinearLayout.LayoutParams对它进行了修改,但如果我在onCreate之外的方法中使用buttonClicked方法调用时,它不会更改我的布局的高度。但是,如果我将LinearLayout.LayoutParams放在onCreate中,那么它就可以工作。我怎样才能做到这一点,当我点击一个按钮?使用布局之外的oncreate方法不起作用

此代码:

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; 

} 
} 

此代码不起作用:

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; 
} 
} 

布局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> 

回答

0

您已更改LayoutParams,但尚未设置它们。加入这一行

layout.setLayoutParams(lp); 
+0

一个愚蠢的错误:(。我忘了设定的LayoutParams我的布局。非常感谢。@KingintheNorth –