如何将字符计数器添加到 Android studio Java 中的 material 设计文本字段

How to add a character counter to a material design textfield in Android studio Java

我正在尝试将字符计数器添加到 material 设计文本字段,这是文本字段 xml 代码:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/outlinedTextFieldDescripcionUniverso"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
    android:layout_width="370dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="40dp"
    android:hint="@string/descripcion"
    android:textColorHint="@color/textos"
    app:counterEnabled="true"
    app:counterMaxLength="150"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/outlinedTextFieldNombreUniverso"> 

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/textInputEditTextDescripcionUniverso"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="top"
        android:inputType="textMultiLine"
        android:textColor="@color/textos" />
</com.google.android.material.textfield.TextInputLayout>

这很好用并且出现了计数器,

textfield with counter

但后来我想让文本字段在垂直方向上更大一些,因此它可以用作文本区域,您可以在其中编写多行并且始终具有相同的高度。所以我改变了textfield和textInputEditText的布局高度,代码是这样的:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/outlinedTextFieldDescripcionUniverso"
    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
    android:layout_width="370dp"
    android:layout_height="150dp"
    android:layout_marginTop="40dp"
    android:hint="@string/descripcion"
    android:textColorHint="@color/textos"
    app:counterEnabled="true"
    app:counterMaxLength="150"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/outlinedTextFieldNombreUniverso">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/textInputEditTextDescripcionUniverso"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="top"
        android:inputType="textMultiLine"
        android:textColor="@color/textos" />
</com.google.android.material.textfield.TextInputLayout>

bigger textfield without counter

现在字符计数器消失了(我假设它隐藏在文本字段下)。 ¿为什么它不移动到文本字段的末尾?

¿还有其他方法吗?我试过普通的文本框,同样的事情发生了

我认为这是因为 TextInputLayout 具有固定高度,正如我在您的代码中看到的那样 android:layout_height="150dp"

解决方案代码:

<com.google.android.material.textfield.TextInputLayout
android:id="@+id/outlinedTextFieldDescripcionUniverso"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="370dp"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:hint="@string/descripcion"
android:textColorHint="@color/textos"
app:counterEnabled="true"
app:counterMaxLength="150"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/outlinedTextFieldNombreUniverso">

<com.google.android.material.textfield.TextInputEditText
    android:id="@+id/textInputEditTextDescripcionUniverso"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:gravity="top"
    android:inputType="textMultiLine"
    android:textColor="@color/textos" />

如有不明之处欢迎随时提问。如果对您有帮助,请将其标记为正确答案,以便将来此答案可以帮助到其他有需要的人。