如何将字符计数器添加到 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" />
如有不明之处欢迎随时提问。如果对您有帮助,请将其标记为正确答案,以便将来此答案可以帮助到其他有需要的人。
我正在尝试将字符计数器添加到 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" />
如有不明之处欢迎随时提问。如果对您有帮助,请将其标记为正确答案,以便将来此答案可以帮助到其他有需要的人。