动态插入EditText时Android的问题与高度有关

时间:2013-07-09 10:59:56

标签: android insert height android-edittext

我正在开发Android应用程序,但我遇到了一些无法解决的问题。

在xml中,我有RelativeLayout一个EditText,动态地我必须插入一两个EditText,具体取决于变量值。

问题

问题在于,当我在第一个(在xml中声明的那个)上方插入一个EditText时,它会获得如此高的高度,我看不到它的结束,我无法理解为什么会这样。

这是我最新的代码:

activity.xml

<!-- Some other layouts -->
<RelativeLayout
    android:id="@+id/relativeLayoutLectura1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/linearLayoutMensajeLectura"
    android:layout_marginLeft="25dp"
    android:layout_marginRight="25dp"
    android:layout_marginTop="10dp">

    <EditText
        android:id="@+id/editTextLectura1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/introducir_lectura"
        android:textSize="@dimen/textSize" />

</RelativeLayout>
<!-- More layouts -->

Activity.java

if(lecturas > 1) {
    // Have to insert lecturas-1 EditText
    RelativeLayout parentLayout = (RelativeLayout) 
    findViewById(R.id.relativeLayoutLectura1);
    for(int lectura = 2; lectura < lecturas; lectura++) {
        EditText editTextLectura = new EditText(this);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
        LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
        if(lectura == 2) {
            //Insert below the one created in xml
            params.addRule(RelativeLayout.BELOW, R.id.editTextLectura1);
        } else {
            //Insert below the one created in previous iteration
            params.addRule(RelativeLayout.BELOW, lectura-1);
        }
        editTextLectura.setLayoutParams(params);
        editTextLectura.setId(lectura);
        editTextLectura.setHint(R.string.introducir_lectura);
        editTextLectura.setTextSize(R.dimen.textSize);
        //Add to layout
        parentLayout.addView(editTextLectura);
    }
}
你可以帮我找到问题吗?正确看到在xml中创建的EditText,并且由代码创建的{{1}}设置在正确的位置。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案!我用:

editTextLectura.setTextSize(R.dimen.textSize);

textSize在dimen文件中声明:

<resources>
    <!-- Other dimen -->
    <dimen name="textSize">15dp</dimen>
</resources>

并且,正如您所看到的,我也在xml中使用它,它运行正常:

<EditText ...
    android:textSize="@dimen/textSize" />

我不知道为什么,但如果我在15dp代码上放R.dimen.textSize而不是Activity,那就没关系。

如果有人能解释,我会很高兴。