Android EditText以编程方式动态高度

时间:2015-02-25 11:35:52

标签: java android android-edittext

我的EditText出了点问题。我希望它能自动增加它的高度。我发现其他人要求它:like this one

我的问题是我没有使用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代码自动增加高度?

提前致谢!

1 个答案:

答案 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));

修改

如果您希望edittext包装内容但必要时展开,请查看此问题Create a multiline EditText programatically