2017-10-06 208 views
2

我想在我的程序中更改線性佈局的大小,而不是xml文件本身。我是一名初學者,也想在方法之外聲明我的變量(public),並在方法中初始化它,就像我用EditText和LinearLayout所做的那樣。Android Studio更改LinearLayout大小

我嘗試了這種方式,但它說:

Error:(47, 81) error: incompatible types: android.view.ViewGroup.LayoutParams cannot be converted to android.widget.LinearLayout.LayoutParams 

但我不知道如何處理此錯誤:(

到目前爲止我的代碼:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 


    public EditText input_chat; 
    public LinearLayout layout_chat_input; 
    public LinearLayout.LayoutParams layout_chat_input_params; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Toast.makeText(getApplicationContext(),"onCreate",Toast.LENGTH_SHORT).show(); 

     input_chat = (EditText) findViewById(R.id.input_chat); 
     layout_chat_input = (LinearLayout) findViewById(R.id.layout_chat_input); 
     layout_chat_input_params = new LinearLayout.LayoutParams(layout_chat_input.getLayoutParams()); 

     input_chat.addTextChangedListener(new TextWatcher() 
     { 

      public void onTextChanged(CharSequence s, int start, int before, int count) 
      { 
       if (input_chat.getLineCount() > 0 && input_chat.getLineCount() < 5) 
       { 

        layout_chat_input_params = layout_chat_input.getLayoutParams(); 
        layout_chat_input.setLayoutParams(); 
       } 
      } 

      public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
      public void afterTextChanged(Editable s) {} 
     }); 
    } 
} 

回答

2

嘗試:

public void onTextChanged(CharSequence s, int start, int before, int count){ 

    if (input_chat.getLineCount() > 0 && input_chat.getLineCount() < 5){ 
     layout_chat_input.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
    } 
} 

OR

layout_chat_input.setLayoutParams(layout_chat_input_params);