Android TextInputLayout / EditText不是完整大小并且会切断文本

时间:2016-07-18 15:23:32

标签: android android-layout layout

我有一个包含计算器的片段(只有三个TextInputEditTexts监听输入)。

这些输入在RelativeLayout中设置,如下所示 -

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:paddingTop="16dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingBottom="16dp">

    <android.support.design.widget.TextInputLayout
        android:id="@+id/binomial_probability_wrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/label_probability"
        android:paddingBottom="16dp">
        <android.support.design.widget.TextInputEditText
            android:id="@+id/binomial_probability_input"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:inputType="numberDecimal"/>
    </android.support.design.widget.TextInputLayout>

    <android.support.design.widget.TextInputLayout
        android:id="@+id/binomial_trials_wrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/label_trials"
        android:paddingBottom="16dp"
        android:layout_below="@+id/binomial_probability_wrapper">
        <android.support.design.widget.TextInputEditText
            android:id="@+id/binomial_trials_input"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:inputType="numberSigned"/>
    </android.support.design.widget.TextInputLayout>

    <android.support.design.widget.TextInputLayout
        android:id="@+id/binomial_successes_wrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/label_successes"
        android:paddingBottom="16dp"
        android:layout_below="@+id/binomial_trials_wrapper">
        <android.support.design.widget.TextInputEditText
            android:id="@+id/binomial_successes_input"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:inputType="numberSigned"/>
    </android.support.design.widget.TextInputLayout>

</RelativeLayout>

我也尝试在一个单独的行上使用LinearLayout和每个输入,但结果相同。

正如您在此图片中所见 - enter image description here

底部输入被切断。如果我在屏幕上测量它,它显然是一个不同的大小,但Android返回相同的值,每个布局和输入的高度。

欢迎任何有关如何解决此问题的建议。

编辑:一些额外的信息。布局边界显示文本光标实际上高于底部TextInputEditText的高度。顶部有正确的高度。

第二次编辑:我在下面添加了一个TextView(用于输出),现在已经切断了,而TextInputEditText现在与其他文本相同。

2 个答案:

答案 0 :(得分:1)

在官方github页面上说:

  

TextInputLayout为填充和轮廓提供了两种高度变化   文本字段,标准且密集。两种框样式均默认为   标准高度。

     

为了减小文本框的高度,可以使用密集   样式,这将减少文本框中的垂直填充。您   可以通过将适当的样式应用于您的   TextInputLayoutTextInputEditText,取决于您是否   使用填充或轮廓文本字段

因此,请尝试将@style/Widget.MaterialComponents.TextInputLayout.FilledBox.Dense应用于您的TextInputLayout或更改TextInputEditText的填充

答案 1 :(得分:0)

  <android.support.design.widget.TextInputLayout
        android:id="@+id/binomial_probability_wrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/label_probability"
        android:paddingBottom="16dp">
        <android.support.design.widget.TextInputEditText
            android:id="@+id/binomial_probability_input"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:inputType="numberDecimal"/>
    </android.support.design.widget.TextInputLayout>

你必须在

中使用android:paddingTop =“5dp”
<android.support.design.widget.TextInputLayout
        android:id="@+id/binomial_probability_wrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/label_probability"
        android:paddingTop="5dp">
 ---- write something ----
    </android.support.design.widget.TextInputLayout>