Android TextInputLayout/EditText 不是全尺寸并截断文本

The*_*ray 6 layout android android-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>
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 LinearLayout 将每个输入放在单独的行上,但结果相同。

正如你在这张图片中看到的—— 在此处输入图片说明

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

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

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

第二次编辑:我在下面添加了一个 TextView(用于输出),现在被切断了,而 TextInputEditText 现在和其他的一样。

Dan*_*Vus 5

正如官方 github 页面所说:

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

为了降低文本框的高度,您可以使用密集样式,这将减少文本框内的垂直填充。您可以通过对您的TextInputLayout和应用适当的样式来实现这一点 TextInputEditText,具体取决于您使用的是填充文本字段还是轮廓文本字段

所以尝试应用@style/Widget.MaterialComponents.TextInputLayout.FilledBox.Dense到您的TextInputLayout或更改填充TextInputEditText


lut*_*oid -1

  <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>
Run Code Online (Sandbox Code Playgroud)

你必须使用 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>
Run Code Online (Sandbox Code Playgroud)