2015-02-25 3 views
1

У меня небольшая проблема с моим EditText. Я хочу, чтобы он автоматически увеличивал его высоту. Я нашел других людей, просящих об этом: like this oneAndroid EditText динамическая высота программно

Моя проблема в том, что я не использовал XML-файл. Я просто использую мой Java-код:

public class CommentatorView extends LinearLayout { 

//Variablen um den Taschenrechner anzupassen 
final static float KLEIN = 0.75f; 
final static float MITTEL = 1.0f; 
final static float GROS = 1.5f; 
final static float GROS_1 = 2.0f; 
final static float GROS_2 = 3.0f; 
final static float GROS_3 = 4.0f; 


CommentatorListener clickListener; 
Commentator goTo; 
EditText commentField; 
public CommentatorView(Commentator goTo) { 
    super(goTo.getContext()); 

    this.setOrientation(LinearLayout.VERTICAL); 
    this.goTo = goTo; 
    clickListener = new CommentatorListener(this, goTo); 

    commentField = new EditText(this.getContext()); 
    commentField.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
    commentField.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE); 

    commentField.setMinHeight(120); 
    this.addComponent(); 
} 

private void addComponent() { 

    this.addView(this.commentField); 

    LinearLayout linearLayout = new LinearLayout(this.getContext()); 

    LayoutParams buttonParams = new LayoutParams(0, LayoutParams.WRAP_CONTENT); 
    buttonParams.weight = 1; 
    buttonParams.setMargins(1, 0, 1, 0); 

    Button btnSave = new Button(this.getContext()); 
    btnSave.setOnClickListener(this.clickListener); 
    btnSave.setTypeface(null, Typeface.BOLD); 
    btnSave.setTextSize(18); 
    btnSave.setText("Speichern"); 
    btnSave.setTag("save"); 
    linearLayout.addView(btnSave, buttonParams); 

    Button btnCancel = new Button(this.getContext()); 
    btnCancel.setOnClickListener(this.clickListener); 
    btnCancel.setTypeface(null, Typeface.BOLD); 
    btnCancel.setText("Abbrechen"); 
    btnCancel.setTag("no"); 
    btnCancel.setTextSize(18); 

    linearLayout.addView(btnCancel, buttonParams); 

    this.addView(linearLayout); 
} 

public int getWantedNumber() { 
    int i = Integer.parseInt(commentField.getText().toString()); 
    return i; 
} 

public boolean isNumber() { 
    try { 
     int d = Integer.parseInt(commentField.getText().toString()); 
     Log.i("WTG", "" + d); 
    } catch (NumberFormatException nfe) { 
     Log.e("WTG", "Cast failed"); 
     return false; 
    } 
    return true; 
}} 

Есть ли способ, чтобы получить автоматически увеличивая высоту только с моей Java-код?

Заранее благодарен!

+0

возможно дубликат [Создать многострочный EditText Programatically] (HTTP: //stackoverflow.com/questions/15032870/create-a-multiline-edittext-programatically) – SnyersK

+0

Да, похоже, это дубликат –

ответ

1

Вместо того чтобы делать

commentField.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 

использовать MATCH_PARENT по высоте, если вы хотите, чтобы быть как ваши родители конечно.

commentField.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 

В противном случае вы можете использовать вес.

commentField.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 0, 1)); 

EDIT

в случае, если вы хотите, чтобы EditText обернуть его содержание, но расширить при необходимости, проверить этот вопрос Create a multiline EditText programatically

Смежные вопросы